ファイル構造が次の場合:
/a/p/c/d...
/c/a/c/g/f/...
/a/c/d/e/...
...
私はこれをしたい:
find -mindepth 3 -type d -name p -prune -or -name c -print
ただし、このコマンドは "p"ディレクトリを削除せず、最初の行が含まれています。私はこれが実際に衝突ではないことを知っています。しかし、最小深さを適用した状態で「p」を切り取る方法は?
ベストアンサー1
FreeBSDとGNU find
(サポートされている数少ない実装の1つ-mindepth
)の場合は、3つ以上の深さのディレクトリのみ-prune
を削除します。p
FreeBSDとGNUfind
ドキュメントの両方が非常に明確に説明されています(ここにGNUドキュメントがあります):
-- Option: -mindepth levels Do not apply any tests or actions at levels less than LEVELS (a non-negative integer). `-mindepth 1' means process all files except the command line arguments.
いつでも標準的な方法で実行できます。
find . -type d -name p -prune -o -path './*/*/*' -name c -print
(-mindepth
そして-or
標準述部でもなく、find
ディレクトリを省略するわけでもありません)。
または以下を使用してzsh
:
setopt extendedglob
printf '%s\n' ^p/^p/(^p/)#c