通过Bash中格式化输出的关键字搜索文件

时间:2013-11-07 14:02:29

标签: bash awk

通过带格式化输出的关键字搜索文件

我希望通过关键字和格式化输出找到任何类型的文件,因此我尝试使用命令" awk,但我收到此错误消息:

% find . -type f -exec grep -if /home/peppespe/Documents/1265/keywords.txt  '{}' ';' -exec ls -laith '{}' ';' -exec md5sum '{}' | awk '{ print "md5 = " $1 }'  ';' -exec sha1sum '{}' | awk '{ print "sha1 = " $1 }' ';'
find: manca l'argomento per «-exec»
awk: linea progr.:1: fatale: non riesco ad aprire file `;' in lettura (File o directory non esistente)
awk: linea progr.:1: fatale: non riesco ad aprire file `;' in lettura (File o directory non esistente)

1 个答案:

答案 0 :(得分:2)

你试图在-exec的参数中使用管道,但是在调用find之前它们会被shell解析。结果是你用';'来调用awk作为一个参数(它认为这是一个打开的文件)。

您可能希望从grep输出文件列表,然后从那里继续,而不是长链-exec。像这样(未经测试)

grep -rifl keywords.txt | while read x; do
    echo "$x md5=$(md5sum $x) sha1=$(sha1sum $x)"
done

这与你正在做的事情有点不同,但也许你可以从那里开始使用它。 : - )