2

ディレクトリでコマンドを実行して、そのディレクトリ内のすべてのファイルを出力し、見つかったファイル名のすべてのファイルを再帰的に出力して、基本的に X ファイルがディレクトリ内のいずれかまたはファイルでgrep使用されているかどうかを確認します。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 '{}' ./* \;

しかし、その後、find が提供するファイル名の前からsed離れることはできません。./dir/etc/

私を困惑させているクエリの他の部分はgrepgrep.

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 に答える