如何打印出符合某些“查找”条件的所有文件的第一行?

squ*_*der 4 find shell-script text-processing

我想打印出每个.txt超过 100 字节的文件的第一行。到目前为止,我已经设法收集符合条件的文件,但我不知道如何打印文件的第一行文本。

find -size +100c -name "*.txt"
Run Code Online (Sandbox Code Playgroud)

或者我完全走错了路?

Ste*_*itt 8

您需要head -n 1在每个文件上运行:

\n
find . -size +100c -name \'*.txt\' -execdir head -n 1 {} \\;\n
Run Code Online (Sandbox Code Playgroud)\n

或者,如果您find不\xe2\x80\x99t 支持-execdir

\n
find . -size +100c -name \'*.txt\' -exec head -n 1 {} \\;\n
Run Code Online (Sandbox Code Playgroud)\n

如果您的head版本支持-q,或者您不关心在一次调用中处理多个文件时为每个文件显示的标头,则可以使用以下命令使这两种变体稍微更有效

\n
\xe2\x80\xa6 -exec head -q -n 1 {} +\n
Run Code Online (Sandbox Code Playgroud)\n

(请参阅竞争条件以-exec了解 的好处-execdir。)

\n