在后台运行 find 和 xargs

在后台运行 find 和 xargs

我想在后台运行此命令,因为该过程可能需要很长时间。我如何将其发送到后台进程?

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的:xargsfindxargs

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

相关内容