すべてのファイルを最大サイズから最小サイズの順にリストし、ファイルはフォルダ内のどこにでも存在できます。
答え1
次のようなものを使用してください。
ls -lS /path/to/folder/
首都S。
これにより、ファイルがサイズでソートされます。
また見なさい:
-S sort by file size
ソートしたい場合キャンセル-r
コマンドを発行したら、スイッチを追加するだけです。
修正する:
ディレクトリを除外します(ファイル名やシンボリックリンク先に改行文字が含まれていないと仮定します)。
ls -lS | grep -v '^d'
アップデート2:
これで、フォルダであるシンボリックリンクがまだ表示されることを確認しました。リンクに示すように、シンボリックリンクは常に文字lで始まります。
コマンドをfilterに変更する-
と、通常のファイルのみが残ります。
ls -lS | grep '^-'
私のシステムでは、通常のファイルのみが表示されます。
アップデート3:
再帰を追加するには、行の並べ替えをコマンドに委ね、sort
5番目の列を使用して並べ替えるように指示します。
ls -lR | grep '^-' | sort -k 5 -rn
-rn
最大のファイルを一番上にインポートするには、逆の順に数字を入力します。このコマンドの欠点は、ファイルのフルパスを表示しないことです。
ファイルのフルパスが本当に必要な場合は、次のように使用します。
find . -type f -exec du -h {} + | sort -r -h
find
このコマンドは、すべてのサブディレクトリにあるすべてのファイルを繰り返し検索して呼び出します(つまり、.
du -h
ディスク使用量 - 人間が読める) 次に、出力を並べ替えます。find
/がsort
サポートされていない場合とに置き換え-h
ます。気づくdu -k
sort -rn
サイズそしてディスク使用量同じではありません。
答え2
検索や並べ替えなどの機能を使用できます。
find . -type f -ls | sort -r -n -k7
(この-ls
オプションは標準ではありませんが、GNU実装だけでなく多くの検索実装でも見つかりますls -li
。
ファイル名に改行文字を含めることができる場合は、GNU findとGNU sortを使用してください。
find . -type f -ls -printf '\0' | sort -zk7rn | tr -d '\0'
答え3
zshとGNU lsの使用:
ls -ldU -- **/*(.OL)
(.OL)
一つはどこにありますか?グローバル予選、.
選ぶ定期的なファイルのみ、OL
長さによる逆順(ファイルサイズ、o
昇順、O
降順)です。
(以前のバージョンのzshにはファイルサイズが2 ^ 32を超える問題がありました。)
一部のオペレーティングシステムでは、コマンドに渡される引数リストのサイズに制限があります。このような場合は、次のことを行う必要があります。
autoload -U zargs
zargs ./**/*(.OL) -- ls -ldU
詳細出力ではなくファイルのリストのみを希望する場合は、次のようにします。
print -rC1 -- **/*(N.OL)
.
隠しファイル(および除く名前がドットで始まるファイル..
)を含み、隠しディレクトリから検索するには、D
globbing修飾子を追加します。
print -rC1 -- **/*(ND.OL)
答え4
「ファイルはフォルダのどこにでも存在できます」という言葉は、スタートアップディレクトリ(フォルダ)内のすべてのディレクトリ(フォルダ)を再帰的に検索することを意味します。find
すべきことは次のとおりです。
find . -type f -exec ls -lSd {} +
これはすべてを「発見」する文書現在の作業ディレクトリ(.
)。見つかったファイルごとに、ls
見つかったオブジェクトをサイズ順に並べ替えるプロセスが実行されます。ターミネータは、複数の引数がリストに渡されるようにします+
。ディレクトリ(フォルダ)に多数のファイルが含まれていない限り、目的の結果を得るにはリストが必要です(したがってプロセスを分岐する必要があります)。-exec
ls