写一个shell脚本,遍历当前目录下除了models testbench所有的文件夹,文件夹下只保留test.sim_command test.startsim vtb_scenario.f,其余文件全部删除
时间: 2024-10-14 17:03:30 浏览: 38
当你需要编写一个Shell脚本来遍历当前目录下的所有文件夹,并且仅保留特定的几个文件而删除其他文件时,可以使用以下bash script作为基础模板:
```bash
#!/bin/bash
# 遍历当前目录及其子目录
for dir in $(find . -type d); do
# 判断是否为models或testbench文件夹
if [[ $dir != "models" && $dir != "testbench" ]]; then
echo "Cleaning directory: $dir"
# 进入该文件夹并查找需要保留的文件
cd "$dir"
files_to_keep=("test.sim_command" "test.startsim" "vtb_scenario.f")
for file in *; do
# 如果文件不在保留列表中,则删除
if ! [[ "${files_to_keep[*]}" =~ "$file" ]]; then
rm "$file"
fi
done
# 返回到上一级目录
cd ..
fi
done
echo "Cleanup completed."
相关问题
写一个shell脚本,遍历当前目录下,除了models 和testbench外所有的文件夹,文件夹下只保留test.sim_command test.startsim vtb_scenario.f,其余文件全部删除
在Linux shell中,你可以编写一个bash脚本来完成这个任务。这里是一个简单的例子:
```sh
#!/bin/bash
# 遍历当前目录下的所有子目录,跳过"models"和"testbench"
for dir in */ ; do
# 检查是否是需要排除的目录
if [[ $dir != "models" && $dir != "testbench" ]]; then
# 进入每个子目录
cd "$dir" || exit
# 遍历子目录下的所有文件
for file in *; do
# 只保留特定的文件
if [[ $file == "test.sim_command" || $file == "test.startsim" || $file == "vtb_scenario.f" ]]; then
continue # 继续处理下一个文件
else
# 删除其他非指定文件
rm -f "$file"
fi
done
# 返回到上一级目录
cd ..
fi
done
# 提示操作完成
echo "已完成对除'models'和'testbench'外所有子目录的清理工作."
```
保存此脚本为`clean.sh`,然后运行它:
```sh
chmod +x clean.sh # 给脚本添加执行权限
./clean.sh # 执行清理操作
```
写一个shell脚本,遍历当前目录下,除了models 或者testbench外所有的文件夹,文件夹下只保留test.sim_command test.startsim vtb_scenario.f,其余文件全部删除
你可以创建一个名为`remove_extra_files.sh`的shell脚本来完成这个任务。下面是一个示例脚本,它会遍历当前目录及其子目录,排除名为"models"和"testbench"的文件夹,并保留特定的三个文件:
```bash
#!/bin/bash
# 遍历当前目录下的所有文件夹,但跳过指定的两个
for dir in */!(models|testbench) ; do
# 访问每个文件夹
cd "$dir"
# 检查并保留特定文件
if [ -e "test.sim_command" ] && [ -e "test.startsim" ] && [ -e "vtb_scenario.f" ]; then
echo "Keeping files in directory $dir"
else
# 删除除指定文件外的所有内容
find . -maxdepth 1 -type f ! -name 'test.sim_command' ! -name 'test.startsim' ! -name 'vtb_scenario.f' | xargs rm -f
echo "Deleting extra files from directory $dir"
fi
# 返回上一级目录
cd ..
done
echo "Script finished."
```
要在终端运行此脚本,你需要先保存它,然后赋予执行权限:
```sh
chmod +x remove_extra_files.sh
./remove_extra_files.sh
```
阅读全文