如果我想找到名称中带有 .txt 的任何文件,并且对于找到的每个匹配项,将其复制到 /junk 文件夹中,以下内容可以被认为是有效的;
find / -name "*.txt" | cp /junk
Run Code Online (Sandbox Code Playgroud)
但这不会起作用,因为 find 会将结果作为列表生成,无法将其输入 cp。
所以我可以使用 xargs 来解决这个问题
find / -name "*.txt" | xargs cp /junk
Run Code Online (Sandbox Code Playgroud)
因为 xargs 会将列表更改为可以输入 cp 的一行。我还认为这个命令将完全完成文件搜索,“生成列表”,然后它才会运行管道的右侧(副本)。
或者(最好)我可以使用 exec
find / -name ".txt" -exec cp {} /junk \;
Run Code Online (Sandbox Code Playgroud)
每次找到匹配项时都会运行副本(并且它将在单独的进程中运行副本,因此 find 命令将继续并行运行)。
有人可以确认这些命令和我的理解是正确的吗?
我应该补充一点,这仅用于教育目的,这不是现实生活中的场景。