在 Unix 中进入多个目录并删除特定文件

在 Unix 中进入多个目录并删除特定文件

我有一个目录列表,我想进入这些目录并删除特定文件。例如,我的目录名称如下:

091513
090213
082612
071611
020908
011009
...
062308

每个目录中有 4 个文件,文件名为:

dealer_score_01.txt
dealer_score_02.txt
dealer_score_03.txt
dealer_score_04.txt

我想编写一个脚本,进入每个目录并删除:

dealer_score_01.txt
dealer_score_03.txt

有人可以帮我吗?

答案1

您不必分别进入每个目录。只需传递要删除的文件名find,然后使用该选项删除它们即可-delete

find . -type f \
\( -name 'dealer_score_01.txt' -or -name 'dealer_score_03.txt' \) -delete

省略-delete以确保您删除了正确的文件。

答案2

如果您已经有目录列表(如您的评论所建议的那样),则可以使用循环来完成。如果目录列表位于 中dir_list,并且假设您的目录名称中均不包含换行符:

while read -r dir; do
  rm -f "$dir"/dealer_score_0{1,3}.txt
done < dir_list

相关内容