Centosサーバーですべての大容量ファイルを見つけようとしています。そのためには、以下を使用しています。
find / -maxdepth 10 -size +100000 -ls
-ls
に変更してみましたが、-lsh
これは許可されていません。
これらの結果を人間が読めるサイズ(サフィックスk、M、...を使用)として表示するにはどうすればよいですか?
答え1
find
のようなものはありませんls
。必要にls -h
応じて電話する必要がありますls
。
find / -maxdepth 10 -size +100000 -exec ls -lh {} +
他のファイルシステムへの再帰を避けるためにオプションを選択することをお勧めします-xdev
。ディスク容量が気になる場合は役に立ちません。
find / -xdev -maxdepth 10 -size +100000 -exec ls -lh {} +
zshをシェルとして使用する場合は、find
代わりにglob修飾子を使用できます。ファイルサイズを制限するのは簡単です。L
サイズの後には、数字の前にオプションの単位があります。最大深度に興味がない場合は、**/
サブディレクトリへの再帰を使用できます。最大深さに興味がある場合は、zsh globモードに「maximum」という表現がないため、より問題になります。Nデバイス間の再帰を防ぐには、glob修飾子を使用してください。デバイス番号を探す必要があります。 Linuxでコマンドを使用するか(番号のみを表示)、zsh独自の組み込みコマンド(実行してロード)を使用してd
デバイス番号を見つける必要があります。それ)。stat
stat -c %d /
stat
zmodload zsh/stat
ls -lh /**/*(L+M99d$(stat -c %d /))
答え2
あなたが試しているコマンドは私が読むことができます。ただし、以下のようにファイルユーティリティを使用して見つけることができます。
find / -maxdepth 10 -size +100000 -exec sh -c 'file -b {} | grep text &>/dev/null' \; -print
別の方法は、次のコマンドを使用することです。
du -BM / | sort -nr
上記のコマンドは、ソートされたファイルサイズでソートされたファイルを提供します。
使用する場合コアユーティリティ > 7.5次のコマンドを実行して、ファイルをサイズ別に一覧表示できます。
du -ah / | grep -v "/$" | sort -h
sort -h
マイコンピュータには利用可能なオプションはありません。
コメントで述べたように、人間が読める形式は、ファイルサイズが次のようになるはずです。知識ベース、MBまたは国家規格。答えとして投稿した2番目のコマンドを使用します。私のシステムで使用したときに得られる結果は次のとおりです。
du -BM /home/ramesh/chk1/ | sort -nr
50M /home/ramesh/chk1/
21M /home/ramesh/chk1/Hierarchical_Clustering_Working
3M /home/ramesh/chk1/checking_files
1M /home/ramesh/chk1/checking/checking2
1M /home/ramesh/chk1/checking/checking1
1M /home/ramesh/chk1/checking/asdf
1M /home/ramesh/chk1/checking
答え3
私はあなたが求めているのは次のようなものだと思います。
find / -maxdepth 10 -size +100000 -exec ls -lah {} +
-exec
コマンドを実行して{}
検索結果に置き換えることができます。最後に、+
findにこれがコマンドの終わりであり、必須であることを知らせることです。
答え4
du -bah
私はオーバーのきちんとした出力を好みますls -hl
(私の記憶力を向上させるために使用できればと思いますが、順序は異なるdu -hab
場合があります)。
find / -maxdepth 10 -size +100000 -exec du -bah {} + 2> /dev/null
du
通常、正確なファイルサイズではなくディスクブロックサイズが表示されるため、-b
またはオプションが必要です。--bytes
--apparent-size --block-size=1
du
du -b
macOSシステムにはこのオプションがない可能性があります。du