使用 rm 或简单的东西递归删除特定文件?

使用 rm 或简单的东西递归删除特定文件?

我有一个根文件夹,其中有一个名为pairs.txt 的文本文件。

该根文件夹中还有其他文件夹,其中包含名为pairs.txt 的文本文件。

有没有一种简单的方法可以使用 删除它们rm

我知道我可以使用,find . -name 'pairs.txt' -exec rm {} \;但我想知道其他方法,也许使用*或其他通配符?

我尝试使用rm -rf pairs.txt,但似乎只删除pairs.txt当前目录中的。

答案1

使用 bash 4+:

shopt -s globstar dotglob
rm -- **/pairs.txt

globstar选项可以**匹配任意数量的目录级别。该dotglob选项使其包含名称以.(点文件)开头的目录。

对于 ksh93,请使用set -o globstar而不是shopt -s globstar.要获得 的效果dotglob,请使用FIGNORE=.

对于zsh,直接使用第二行。要包含点文件,setopt glob_dots请先运行或创建第二行rm -- **/pairs.txt(D)

请注意,bash**遵循目录的符号链接。 Ksh 和 zsh 则不然。

答案2

ls -1R / | grep -e "/pairs.txt$" | xargs rm

相关内容