私のCentosサーバーですべての大きなファイルを見つけようとしています。そのために私は使用しています:
find / -maxdepth 10 -size +100000 -ls
変更してみました-ls
から-lsh
が許可されていません。
これらの結果を人間が読めるサイズ(接尾辞k、Mなどを使用)で表示するにはどうすればよいですか?
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パターンに「最大nオカレンス」を表現する方法がないため、面倒です。デバイス間の再帰を回避するには、d
glob修飾子を使用します。 Linuxのstat
コマンドで表示できるデバイス番号を見つける必要があります(数値のみを表示するにはstat -c %d /
)、またはzsh独自のstat
ビルトイン(それをロードするにはzmodload zsh/stat
を実行)を使用します。
ls -lh /**/*(L+M99d$(stat -c %d /))
あなたがしようとしているコマンドは私には判読可能です。ただし、次のように検索でファイルユーティリティを使用できます。
find / -maxdepth 10 -size +100000 -exec sh -c 'file -b {} | grep text &>/dev/null' \; -print
これを行う別の方法は、以下のコマンドを使用することです。
du -BM / | sort -nr
上記のコマンドは、ソートされたファイルサイズでファイルを提供します。
coreutils> 7.5 を使用している場合は、以下のコマンドを発行して、サイズ別にファイルを一覧表示できます。
du -ah / | grep -v "/$" | sort -h
私のマシンでは、sort -h
オプションが利用可能です。
コメントで述べたように、人間が読める形式は、ファイルのサイズがkb、mbである必要がありますまたはgb。答えとして投稿した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
あとは次のような感じです。
find / -maxdepth 10 -size +100000 -exec ls -lah {} +
-exec
を使用すると、コマンドと{}
は、検索の結果で置き換えられます。最後に+
は、コマンドの終わりであり、それが必要であることを見つけることを伝えます。