如何从一堆目录中删除某些文件?

如何从一堆目录中删除某些文件?

我想定期从大约 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}

(这里的行为不会是相当相同:如果file1file2结果是目录,第一个实现将失败并出现错误,而第二个实现将删除所有内容。)

相关内容