2

我想在目录上运行命令以打印出该目录中的所有文件,然后递归地打印所有文件以查找找到的文件名,基本上是检查并查看目录中的任何或文件中grep是否使用了 X 文件。如果发现 X 文件不在任何文件中,则打印它的名称。PHPHTML

到目前为止,我有这个,我不知道如何传递给grep我所拥有的然后打印那些没有结果的东西。

find . -path ./images -prune -o -name '*' -type f -print | sed 's!.*/!!'

我可以exec这样使用:

find . -path ./images -prune -o -name '*' -type f -exec grep -R '{}' ./* \;

但是我无法sed摆脱./dir/etc/find 给我的文件名前面的 from 。

令我困惑的查询的另一部分是我无法弄清楚如何获取grep或查找打印那些没有结果的grep.

4

2 回答 2

3

我认为这样的事情可能会有所帮助:

$ find . -type f -printf "%f\n" | grep --color -R -f - .

在此示例中,-printf "%f\n"find返回文件名而不返回路径。结果是一个文件,用作 grep 的搜索模式,并作为输入传递给stdinusing -f --R告诉 grep 递归搜索(你已经知道了)。使--color事情看起来不错。

要仅列出匹配的文件名,请使用grep -l -R -f - .. 然后要查找没有结果的文件,您必须找到不在该列表中的文件。

这篇文章可能会帮助你。

于 2012-12-19T22:36:15.747 回答
1

用于-exec调用basename和管道到grep

find ./images -maxdepth 1 -type f -exec basename {} \; | grep ...

这将仅打印在./images.

于 2012-12-19T23:05:30.190 回答