在后台运行 find 和 xargs

swe*_*web 4 linux find xargs

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

find /tmp/ -type f -mtime +3 | xargs rm -Rf
Run Code Online (Sandbox Code Playgroud)

这不起作用:

find /tmp/ -type f -mtime +3 | xargs rm -Rf &
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

slh*_*hck 9

如果你想在后台运行,把它们放在一个子shell中:

(find /tmp/ -type f -mtime +3 | xargs rm -Rf) &
Run Code Online (Sandbox Code Playgroud)

但是,请不要这样做。管道find输出到xargs,除非你使用下面的选项,这是在GNU和BSD的支持是不安全findxargs

find … -print0 | xargs -0 …
Run Code Online (Sandbox Code Playgroud)

如果find返回的文件名称中带有空格,您甚至可以在不知情的情况下不可逆转地删除错误的文件夹。仔细阅读find手册和有关删除文件部分以获取更多信息。

就您而言,最安全的方法是:

find /tmp/ -type f -mtime +3 -delete &
Run Code Online (Sandbox Code Playgroud)