我想编写一个命令来查找包含给定内容的所有文件。例如所有带有短语“iso文件”的文件。我已经写了这个命令:如何通过它包含的内容查找文件?
find -exec -grep -l "iso file"{}
但是我得到一个消息,指出'-exec'没有参数。这个命令应该如何?
我想编写一个命令来查找包含给定内容的所有文件。例如所有带有短语“iso文件”的文件。我已经写了这个命令:如何通过它包含的内容查找文件?
find -exec -grep -l "iso file"{}
但是我得到一个消息,指出'-exec'没有参数。这个命令应该如何?
-exec
操作要求您指定要执行的以分号结尾的命令。你已经省略了分号。您还在grep
命令的名称前加了一个连字符,其结果不可能是系统上任何命令的名称。此外,如果你这样做,那么你可能只想考虑普通文件,而不是目录(或特殊文件)。
find -type f -exec grep -l "iso file" {} \;
在另一方面,find
是帮倒忙比这里帮助的,因为grep
都可以对自己进行递归搜索:你可以写这样的命令解决所有这些问题
grep -lR "iso file" .
您可以使用下面的命令使用xargs打印所有文件/目录。
find ./ -type f -print | xargs grep -l "iso file"
如果你要打印匹配,以及你可以删除grep命令“-l”参数,写这样的整条生产线。
find ./ -type f -print | xargs grep "iso file"
如果文件名中有空格或时髦的字符,这将失败。最好做一些像'find ./ -type f -print0 | xargs -0 grep -l“iso文件”......这些都是零。 – gilez
你的语法稍微偏离。 '找。 -exec grep -l“iso file”{} \;'注意这会为每个文件产生一个新的grep。 'grep -r“iso文件”。“可能更有效率。 – blackghost