我有一个根文件夹,其中有一个名为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