我想在一个目录上运行一个命令来打印出该目录中的所有文件,然后递归grep
所有找到文件名的文件,基本上检查并查看是否在任何{{{目录中的1}}或PHP
个文件。如果发现X文件不在任何文件中,请打印它的名称。
到目前为止我有这个,我无法弄清楚如何传递给HTML
我所拥有的东西然后打印那些没有结果的东西。
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/
或找到在grep
中打印没有结果的那些。
答案 0 :(得分:3)
我认为这样的事情可能有所帮助:
$ find . -type f -printf "%f\n" | grep --color -R -f - .
在此示例中,-printf "%f\n"
导致find
仅返回没有路径的文件名。结果是一个用作grep搜索模式的文件,并使用stdin
作为-f -
的输入传递。 -R
告诉grep递归搜索(你已经知道)。 --color
使事情变得美好。
仅列出匹配的文件名使用grep -l -R -f - .
。然后要查找没有结果的文件,您必须找到不在该列表中的文件。
This post可能会帮助您。
答案 1 :(得分:1)
使用-exec
来呼叫basename
并管道转移到grep
:
find ./images -maxdepth 1 -type f -exec basename {} \; | grep ...
这将只打印./images
中找到的所有文件的文件名。