![在后台运行 find 和 xargs](https://linux22.com/image/1371117/%E5%9C%A8%E5%90%8E%E5%8F%B0%E8%BF%90%E8%A1%8C%20find%20%E5%92%8C%20xargs.png)
我想在后台运行此命令,因为该过程可能需要很长时间。我如何将其发送到后台进程?
find /tmp/ -type f -mtime +3 | xargs rm -Rf
这不起作用:
find /tmp/ -type f -mtime +3 | xargs rm -Rf &
我该如何做呢?
答案1
如果要在后台运行它们,请将它们放在子 shell 中:
(find /tmp/ -type f -mtime +3 | xargs rm -Rf) &
但是,求求您,不要这样做.除非您使用以下选项(GNU 和 BSD 支持这些选项),否则将输出管道化到 是不安全find
的:xargs
find
xargs
find … -print0 | xargs -0 …
如果find
返回的文件名称中有空格,您可能会在不知情的情况下不可逆转地删除错误的文件夹。请仔细阅读手册find
和关于删除文件的部分了解更多信息。
就您而言,最安全的方法是:
find /tmp/ -type f -mtime +3 -delete &
答案2
根据文件系统所在的硬件,并行删除可能会更快:
( find . | parallel -X rm ) &
与 GNU Parallel 相比,xargs
它可以正确处理文件名中的空格、“和 '。仅当您的文件名包含换行符时,才需要 -print0/-0。
10秒安装:
wget -O - pi.dk/3 | bash
观看简介视频以获得快速介绍: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1