njd*_*njd 28
首先要输入的内容:
man find
man xargs
Run Code Online (Sandbox Code Playgroud)
该find命令默认将结果打印到标准输出,因此-print通常不需要该选项,但-print0使用 0 (NULL) 字节分隔文件名,以便可以正确解释包含空格或换行符的名称。
-exec您可以使用该选项代替 xargs - find 命令为它找到的每个项目执行一个命令。
该xargs命令读取空格或换行符分隔的字符串(通常来自find命令,但它们可以来自任何地方)并为每个字符串执行一些命令。
如果 xargs 使用-0选项运行,它将期望以 NULL 分隔的字符串作为输出find ... -print0
xargs 的优点是它可以将字符串组合在一起,因此它只执行一个命令一两次而不是n次。
所以在正常使用中:
find start_directory -name '*.txt' | xargs ls -l
Run Code Online (Sandbox Code Playgroud)
find将列出文件名,而xargs将发出如下命令:
ls -l file1.txt file2.txt file3.txt ... fileN.txt
Run Code Online (Sandbox Code Playgroud)
这比让您的 find 命令发出更快:
ls -l file1.txt
ls -l file2.txt
ls -l file3.txt
ls -l ...
ls -l fileN.txt
Run Code Online (Sandbox Code Playgroud)
请注意,当前可能都支持此 POSIX 语法的 find 实现不再需要 xargs:
find directory -name '*.txt' -exec ls -l {} +
Run Code Online (Sandbox Code Playgroud)
这比 xargs 变体更简单,速度也稍快。
find directory -name '*.txt' | xargs ls -l
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28693 次 |
| 最近记录: |