テキストファイル.txtの内容をファイルサイズで並べ替える方法

テキストファイル.txtの内容をファイルサイズで並べ替える方法

このファイルは以下によって生成されました。

ls -Raltr -block-size=M /* > /home/root/all_files.txt

grepを使って複数のコマンドを試しましたが、成功しませんでした。

ベストアンサー1

最も簡単な方法は、-Swithを使用してlsディレクトリの内容をサイズでソートすることです。ファイルはまだディレクトリごとにグループ化されていますが、これはおそらく望むものではないかもしれません。

ls -RaltrS --block-size=M /*

この方法はここではオプションではないかもしれません。all_files.txtファイルが古いか、別のコンピュータで作成された可能性があります。ファイルサイズでファイル名を並べ替えることはまだ可能です。一般的なファイルの場合ls -Raltr --block-size=M(1つではなく2つのハイフンで始まる注)によって生成された出力行は--block-size次のとおりです。

-rw-rw-r-- 1 owner group 1M Apr 16 05:37 file.txt

sortwith -h(人が読める数字(例:1M))と-k 5テキストの5番目の列(スペースで区切られた)を使用してファイルサイズを指定します。

sort -k 5 -h /home/root/all_files.txt

ls -Raltr --block-size=M /*/home/root/all_files.txtファイルサイズがリストされていない追加の行があるため、保存された出力を並べ替えるのは混乱する可能性があるため、最初に必要なgrep行だけを取得するには、次のようにします。

grep '^-' /home/root/all_files.txt | sort -k 5 -h

ここで、grep '^-'ハイフンで始まらない行(たとえば、dforディレクトリまたはリンクでl始まる行)は削除されます。

この答えはXubuntu 16.04のGNUツールについてです。 MacOSまたはBSDシステムではテストされていません。

おすすめ記事