我想要删除当前目录和当前目录内所有目录中rm
以 结尾的所有文件~
。我以为标志-r
或-R
会这样做;但是,以下命令仅删除~
当前目录中以 结尾的文件,而不会删除当前目录中的其他目录:
rm *~ -r
rm *~ -R
它是否可以rm
按照我在这里解释的那样实现我想要的效果?如果可以,如何实现?
我使用 tcsh。
答案1
兼容的方法是告诉find
构造一个文件列表并将其传递给rm
。使用较新的语法(如果记忆不错的话,大约在 2005 年添加到 POSIX)-exec ... {} +
将使其既高效又安全:
find . -name '*~' -exec rm -f {} +
对于较新的(4.x)bash 或大多数 zsh 版本,您还可以告诉 shell 自己执行递归通配符:
shopt -s globstar # enable recursive globbing with ** on bash
rm -f **/*~
答案2
您可以使用以下命令从每个目录中删除所有文件:
find -name "*~" -print0 | xargs -0 rm
在哪里查找 -name "*~"查找所有名称末尾带有“~”的文件,-print0在一行中列出所有文件,xargs -0 rm它获取输入的所有文件列表并像 rm 一样工作。如果您甚至想删除名称末尾带有“~”的每个目录,那么您也可以通过将 rm 替换为 rm -rf 来实现。