我试图在同一个文件的第一行(扩展名无关紧要)打印包含#!bin/bash的文件名。
我这样做允许我在文件中的任何位置打印包含:#!bin/bash的文件的名称,但我只需要在第一行打印包含此链的文件的名称。
以下是我所做的:

find . -type f -name - grep -L '#!bin/bash' {} \; -printf '%f\n'> file.txt

最佳答案

awk来做这个怎么样?

awk 'NR==1 && ($0 == "#!bin/bash") {print FILENAME} {exit}' file

这将检查第一行是否包含此内容。如果是,它会打印文件名。然后,不管发生了什么,它退出文件,因为它不需要处理它了。
使用findawk命令提供文件,只需说find /your/path -exec awk '...' {} \;即可,例如:
find -type f -exec awk 'NR==1 && ($0 == "#!bin/bash") {print FILENAME} {exit}' {} \;

10-07 19:33
查看更多