bashはファイルとディレクトリの数を計算し、サイズを要約し、ヒューズ| sshfsフォルダを除外します。

bashはファイルとディレクトリの数を計算し、サイズを要約し、ヒューズ| sshfsフォルダを除外します。

Linuxシステム(Debian)で指定されたディレクトリ内のファイルとフォルダの数を計算するには、bashスクリプトの助けが必要ですが、指定されたフォルダを除外したいと思います。

workdir他のスクリプトファイルとフォルダの名前を付けたホームディレクトリがあります。内部にはworkdirというディレクトリがありますmysshfs。私はヒューズ/ sshfsを使ってフォルダ内に外部フォルダをマウントしますmysshfs

これで、ファイル/ディレクトリの数とファイル/ディレクトリのサイズに関する情報を取得するためにいくつかのコマンドを実行しますが、directoyを除外したいと思いますmysshfs

私のbashコマンドが動作します。

  1. workdirフルサイズを見る|ヒューズ/sshfsが使用されない

    $ du -hs workdir
    
  2. |をworkdir除いて、全体のサイズを取得します。mysshfsヒューズ/sshfs使用中

    $ du -hs --exclude=mysshf workdir
    
  3. workdir|のファイル数を数えます。ヒューズ/sshfsが使用されない

    $ find workdir -type f | wc -l
    
  4. workdir|のフォルダー数を計算します。ヒューズ/sshfsが使用されない

    $ find workdir -type d | wc -l
    
  5. workdirmysshfs除いて、計算中のファイル数ヒューズ/sshfsが使用されない

    $ find workdir -type f -not -path "*mysshfs*" | wc -l
    
  6. 計算のフォルダworkdir(除外mysshfs)|ヒューズ/sshfsが使用されない

    $ find workdir -type d -not -path "*mysshfs*" | wc -l
    

コマンドを使用する場合5&6そして、リモートディレクトリがmysshfsそのディレクトリの下にマウントされ、コマンドが中断されます。

コマンドは最終的に動作して正しい出力を表示しますが、そうではないにもかかわらず、コマンドがまだ除外されたディレクトリを探しているように見えるため、結果を表示するのに時間がかかります。

私の間違いはどこにありますか?それとも、コマンド5と6で何かを忘れましたか?それとも、結果を得るために使用できる他のコマンドはありますか?

迅速な結果を得るには、2つの別々のコマンドを使用してファイルとディレクトリの数を計算し、fusion / sshfsを介してマウントされた指定されたフォルダを除外する必要があります。

ベストアンサー1

を使用すると、サブディレクトリに移動することを回避できます-prune。次のコマンドを試してください。

find workdir -path "*/mysshfs/*" -prune -o \( -type f -print \) | wc -l
find workdir -path "*/mysshfs/*" -prune \( -type d -print \)  | wc -l

おすすめ記事