ディレクトリから見つからないファイルを見つけて印刷するには?

ディレクトリから見つからないファイルを見つけて印刷するには?

.gridで終わるファイルを含む親ディレクトリのすべてのディレクトリを見つけて一覧表示したいと思います。/work/user/folder1/*/*

find /work/user/folder1/*/*/ '!' -mindepth 1 -maxdepth 1 -name *.grid

次にやりたいことは、.gridで終わるファイルが見つからないすべてのディレクトリを見つけることです。デフォルトでは、欠落しているフォルダを印刷するコマンドが必要です。

どうすればいいですか?

ベストアンサー1

find電話をかけるときに使用してくださいfind

find . -type d \( -exec sh -c 'cd "$0"; find . \( -name . -o -prune \) -name "*.grid" | grep -q .' {} \; -o -print \)

これはPOSIXに準拠しています。この回答ありがとうございます。

また、ファイル名やディレクトリ名にスペース、特殊文字、改行文字が含まれているかどうかに関係なく機能します。 :)

(注:もしあなたがするディレクトリ名に特殊文字または改行文字が含まれている場合は、-print最終mainをディレクトリ内の必要に応じて変更する必要があります。これは、.のみを使用すると結果の印刷リストを安全に解析できないためです-print。 )

以下は、読みやすくするために誤解を招く改行文字が追加されたバージョンです。

find . -type d \
  \( \
    -exec sh -c '
      cd "$0";
      find . \( -name . -o -prune \) -name "*.grid" |
        grep -q .
    ' {} \; \
    -o -print \
  \)

おすすめ記事