次のディレクトリ(およびファイル)構造を考えてみましょう。
mkdir testone
mkdir testtwo
mkdir testone/.svn
mkdir testtwo/.git
touch testone/fileA
touch testone/fileB
touch testone/fileC
touch testone/.svn/fileA1
touch testone/.svn/fileB1
touch testone/.svn/fileC1
touch testtwo/fileD
touch testtwo/fileE
touch testtwo/fileF
touch testtwo/.git/fileD1
touch testtwo/.git/fileE1
touch testtwo/.git/fileF1
これら2つのディレクトリにあるすべてのファイルを印刷/検索したいが、サブディレクトリおよび/.git
または.svn
。
find test*
...これにより、すべてのファイルがダンプされます。
私がこれを行うと(例えば、ワイルドカードを含む検索検索で隠しファイルとディレクトリを除外/無視する方法は?):
$ find test* -path '.svn' -o -prune
testone
testtwo
$ find test* -path '*/.svn/*' -o -prune
testone
testtwo
...その後、ダンプの最上位ディレクトリだけがインポートされ、ファイル名はインポートされません。
find
grep
パイピングなしでこのような検索/リストfind
を独自に実行できますかfind test* | grep -v '\.svn' | grep -v '\.git'
?
ベストアンサー1
コマンドは、find
指定されたパスが一致しない場合に実行する操作を指しません。ドットで始まるすべてを除いて残りを印刷するには、次のようにします。
find test* -path '*/.*' -prune -o -print
したがって、そのパスに一致するすべてのアイテムを削除し、一致しないアイテムを印刷します。
出力例:
testone
testone/fileC
testone/fileB
testone/fileA
testtwo
testtwo/fileE
testtwo/fileF
testtwo/fileD
ドットで始まるコンテンツを除外し、他のコンテンツを除外するには、次の手順を実行します.svn
。.git
find test* \( -path '*/.svn' -o -path '*/.git' \) -prune -o -print
この例では、同じ出力が生成されます。
最上位ディレクトリを除外するには、-mindepth 1
次のものを追加できます。
find test* -mindepth 1 -path '*/.*' -prune -o -print
これは作る
testone/fileC
testone/fileB
testone/fileA
testtwo/fileE
testtwo/fileF
testtwo/fileD