我需要列出并删除 .php、.xml 文件。为此,我使用find
命令。
列出:
find . -type f -name \*.php -print0
删除 :
find . -type f -name \*.php -print0 | xargs -0 rm -r
当我跑find
两次时。是否可以存储第一个命令的结果,然后在第二个命令中重用?
谢谢。
答案1
find . -type f -name '*.php' -print0 | tee list | tr \\0 \\n
xargs -r0 rm -f < list
假设您想在决定删除它们之前查看该列表。如果没有,您可以简单地执行以下操作:
find . -name '*.php' -type f -print -delete
(请注意-print0
, 、-delete
、-r
、-0
不是标准的,但受 GNU 实现支持)
另请注意,虽然相对安全,但在第一个解决方案中,有人可能会在您运行and命令find -delete
之间将目录重命名为某些敏感区域的符号链接,并让您删除您不打算删除的文件。运行两次,第二次可以避免这种情况。find
xargs
find
-delete
答案2
由于您需要.php
和.xml
文件,因此find
命令应如下所示:
find . \( -name '*.php' -o -name '*.xml' \) -type f -print -exec rm {} +
每个文件块仅使用一次+
的指令。如果我们使用了,我们将为每个文件运行一个命令。find
rm
\;
rm