我想限制 find 命令的输出。过去我曾经用于这个 ls 命令,例如:
ls *tgz|head -100|xargs -i mv "{}" ../
Run Code Online (Sandbox Code Playgroud)
但我知道如果文件名包含换行符,结果可能是不可预测的。所以更正确的方法是这样的:
find ... -print0 | xargs -0
Run Code Online (Sandbox Code Playgroud)
但是采用这种方法我无法使用 head 命令限制 find 的输出 - 它显示所有文件名用 ^@ 特殊符号分隔:
find . -name '*tgz' -print0|head -2|less
Run Code Online (Sandbox Code Playgroud)
file1.tgz^@file2.tgz^@file3.tgz^@file4.tgz^@file5.tgz^@
有没有办法消除这种尴尬?
我试图在 awk 的帮助下解决它:
find . -name 'BATCHED*' -print0|awk 'BEGIN{RS=""}'
Run Code Online (Sandbox Code Playgroud)
但它仍然显示所有或零行。
可以借助awk解决吗?有更好的解决方案吗?
顺便提一句。我发现这个非常有指导意义的参考,但我的问题没有答案。