我想定期从大约 10 个目录中删除某些文件和子目录。每个目录中的这些文件和子目录的名称相同。我用伪语言看起来像这样:
["dir1", "dir2", "dir3", "dir4"].each do |dir|
remove "#{dir}/file1"
remove "#{dir}/file2"
remove_rf "#{dir}/sub_dir1"
remove_rf "#{dir}/sub_dir2"
end
我将如何在 bash 中执行此操作?
答案1
您的伪代码的 shell 等效内容是这样的:
for dir in dir1 dir2 dir3 dir4; do
rm "${dir}/file1" "${dir}/file2"
rm -rf "${dir}/sub_dir1" "${dir}/sub_dir2"
done
这可以用不同的方式写,例如
rm -rf {dir1,dir2,dir3,dir4}/{file1,file2,sub_dir1,sub_dir2}
(这里的行为不会是相当相同:如果file1
和file2
结果是目录,第一个实现将失败并出现错误,而第二个实现将删除所有内容。)