如何 `rm` 当前目录和当前目录内的目录中的文件

如何 `rm` 当前目录和当前目录内的目录中的文件

我想要删除当前目录和当前目录内所有目录中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 来实现。

相关内容