検索コマンドは、複数のディレクトリと複数のファイル拡張子を除外します。

検索コマンドは、複数のディレクトリと複数のファイル拡張子を除外します。

多くのファイルとフォルダを含むフォルダがあります。これには多くのマルチメディアファイル(jpg、jpeg、mp4、mpeg)が含まれています。このディレクトリには多くのサブフォルダも含まれています。

私は2つのことをしたい:

  1. すべてのファイルの総数を見つける

  2. ファイルとフォルダが使用するフルサイズを見つけます。

mp4、jpegファイルなど、特定の拡張子を持つファイルを除外したいと思います。また、さまざまなフォルダを除外したいと思います。 1000個のファイルと200個のフォルダがあるとしましょう。これらのファイルの中から、特定の拡張子といくつかのフォルダを持つファイルを除外したいと思います。たとえば、azというフォルダが26個ある場合は、h、f、yなどのフォルダを除外したいと思います。

これらのファイルとフォルダは、存在するファイルの総数とそのサイズの最終出力に含めてはいけません。

最善を尽くして90%完了しました。このコマンドは既存のファイルとディレクトリの両方を除外しますが、フォルダ名も印刷するため、出力にはファイル名のみが表示されます。

find . -type d \( -path "*/Make-Directory-Script-master" -o -path "*/pycharm-community-2020.3" \) -prune  -o -type f \( -name "*.zip"  -o -name "*.pdf" -o -name "*.js" -o -name "*.json" -o -name "*.css" -o -name "*.srt" \) -prune -o  -print

どんな助けでも大変感謝します。

答え1

-type f最終前に追加してください。-print

コマンドは次のとおりです(読みやすくするために折りたたまれています)。

find . -type d \( -path "*/Make-Directory-Script-master" -o -path "*/pycharm-community-2020.3" \) -prune  
    -o -type f \( -name "*.zip"  -o -name "*.pdf" -o -name "*.js" -o -name "*.json" -o -name "*.css" -o -name "*.srt" \) -prune 
    -o -type f -print

元のコマンド(切り捨て番号付きの行)

#1  find . -type d \( -path ... \) -prune  
#2    -o -type f \( -name ... \) -prune 
#3    -o -print
  • 行1では、リストからパスを選択して-prune(つまり検索を停止する)、行1 " \(..\) -prune"全体がtrueと評価されるため、パス一致パターンが出力からスキップされます。
  • 2行目では、次を使用します。またはConjunction(-o)拡張子のリストをフィルタリングし、出力からスキップします。
  • -type fファイル名やディレクトリ名など、残りのパスを印刷せずに最後の行または3行目を使用してください。

関連情報