ディレクトリ内のファイル数を(再帰的に)取得しますが、特定の名前のディレクトリを除外する方法

ディレクトリ内のファイル数を(再帰的に)取得しますが、特定の名前のディレクトリを除外する方法

これは次のようによく似ています。これ質問がありますが、さらに進むべきです。私はSynologyドライブを使用しており、@eaDir無視したい多数のディレクトリ(およびそのディレクトリのファイル)があります。どうすればいいですか?

これは隠されたファイル(私が望むもの)にうまく機能する再帰コマンドです。しかし、ディレクトリ名を除外するにはどうすればよいですか@eaDir

find .//. ! -name . -print | grep -c //

ベストアンサー1

指定したディレクトリに移動したくない場合は、beforeを@eaDir使用しないでください。!-name

 mkdir -p a/@eaDir
 mkdir -p b/c/@eaDir
 mkdir -p d/e/f
 touch a/@eaDir/xxx
 touch b/yyy
 touch b/c/@eaDir/xxx
 touch d/e/f/yyy
 find . -name '@eaDir' -prune -o -print

あなたに与えるでしょう:

.
./b
./b/yyy
./b/c
./a
./d
./d/e
./d/e/f
./d/e/f/yyy

そして

find .//. -name '@eaDir' -prune -o -print | grep -c // 

あなたに与えるでしょう:9

名前が一致する場合は、-name '@eaDir'下のツリーの残りの部分をスキップし('-prune')、そうでない場合は名前を印刷します(-o -print

おすすめ記事