Linuxシステム(Debian)で指定されたディレクトリ内のファイルとフォルダの数を計算するには、bashスクリプトの助けが必要ですが、指定されたフォルダを除外したいと思います。
workdir
他のスクリプトファイルとフォルダの名前を付けたホームディレクトリがあります。内部にはworkdir
というディレクトリがありますmysshfs
。私はヒューズ/ sshfsを使ってフォルダ内に外部フォルダをマウントしますmysshfs
。
これで、ファイル/ディレクトリの数とファイル/ディレクトリのサイズに関する情報を取得するためにいくつかのコマンドを実行しますが、directoyを除外したいと思いますmysshfs
。
私のbashコマンドが動作します。
workdir
フルサイズを見る|ヒューズ/sshfsが使用されない$ du -hs workdir
|を
workdir
除いて、全体のサイズを取得します。mysshfs
ヒューズ/sshfs使用中$ du -hs --exclude=mysshf workdir
workdir
|のファイル数を数えます。ヒューズ/sshfsが使用されない$ find workdir -type f | wc -l
workdir
|のフォルダー数を計算します。ヒューズ/sshfsが使用されない$ find workdir -type d | wc -l
workdir
mysshfs
除いて、計算中のファイル数ヒューズ/sshfsが使用されない$ find workdir -type f -not -path "*mysshfs*" | wc -l
計算のフォルダ
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