du結果を時間でソートする方法*と* --max-length = 1制限

du結果を時間でソートする方法*と* --max-length = 1制限

私はrsyncを使用してファイルをバックアップし、--link-destフォルダの最後のバックアップとの違いのみを同期します。

とにかく、日付別にソートされたディレクトリのリストを表示できますか?そして--max-depth=1またはに制限しますか-d 1

たとえば、次はディレクトリの深さを示しています。

$ du -h --max-depth=1
33G     ./05-12-2021-16:00
4.7G    ./05-12-2021-12:30
4.6G    ./05-12-2021-11:30
11G     ./06-12-2021-13:30
4.8G    ./06-12-2021-02:00
19M     ./06-12-2021-08:58
4.7G    ./05-12-2021-21:00
938M    ./05-12-2021-02:11
754M    ./05-12-2021-19:00
32M     ./06-12-2021-02:30
179M    ./05-12-2021-13:30
172M    ./05-12-2021-17:30
4.7G    ./05-12-2021-22:00
752M    ./05-12-2021-20:00
170M    ./05-12-2021-17:00
4.7G    ./06-12-2021-12:01
934M    ./05-12-2021-12:00
38M     ./05-12-2021-14:00
175M    ./06-12-2021-12:31
34M     ./05-12-2021-18:00
388M    ./05-12-2021-16:30
42M     ./06-12-2021-14:01
4.7G    ./05-12-2021-00:54
756M    ./06-12-2021-11:33
173M    ./06-12-2021-00:31
4.5G    ./06-12-2021-15:31
31M     ./06-12-2021-00:00
1007M   ./05-12-2021-23:01
762M    ./05-12-2021-22:30
31M     ./05-12-2021-21:30
765M    ./06-12-2021-15:01
214M    ./05-12-2021-10:44
32M     ./06-12-2021-01:30
33M     ./06-12-2021-13:00
27M     ./05-12-2021-15:00
166M    ./05-12-2021-11:00
32M     ./06-12-2021-01:01
176M    ./05-12-2021-02:30
27M     ./05-12-2021-15:30
30M     ./05-12-2021-18:30
37M     ./05-12-2021-13:00
31M     ./05-12-2021-20:30
753M    ./05-12-2021-23:30
752M    ./05-12-2021-19:30
43M     ./06-12-2021-14:30
38M     ./05-12-2021-14:30
91G     .

答えを使うここ、サイズでソートされますが、完全に各ディレクトリで繰り返されます。

$ command ls -dt */ | while IFS= read -r dir; do du -sh "$dir"; done
33G     05-12-2021-00:54/
33G     05-12-2021-02:11/
33G     05-12-2021-02:30/
33G     05-12-2021-10:44/
33G     05-12-2021-11:00/
33G     05-12-2021-11:30/
33G     05-12-2021-12:00/
33G     05-12-2021-12:30/
33G     05-12-2021-13:00/
33G     05-12-2021-13:30/
33G     05-12-2021-14:00/
33G     05-12-2021-14:30/
33G     05-12-2021-15:00/
33G     05-12-2021-15:30/
33G     05-12-2021-16:00/
33G     05-12-2021-16:30/
33G     05-12-2021-17:00/
33G     05-12-2021-17:30/
33G     05-12-2021-18:00/
33G     05-12-2021-18:30/
33G     05-12-2021-19:00/
33G     05-12-2021-19:30/
33G     05-12-2021-20:00/
33G     05-12-2021-20:30/
33G     05-12-2021-21:00/
33G     05-12-2021-21:30/
33G     05-12-2021-22:00/
33G     05-12-2021-22:30/
33G     05-12-2021-23:01/
33G     05-12-2021-23:30/
33G     06-12-2021-00:00/
33G     06-12-2021-00:31/
33G     06-12-2021-01:01/
33G     06-12-2021-01:30/
33G     06-12-2021-02:00/
33G     06-12-2021-02:30/
23G     06-12-2021-08:58/
33G     06-12-2021-11:33/
33G     06-12-2021-12:01/
33G     06-12-2021-12:31/
33G     06-12-2021-13:00/
33G     06-12-2021-13:30/
33G     06-12-2021-14:01/
33G     06-12-2021-14:30/
33G     06-12-2021-15:01/
33G     06-12-2021-15:31/
33G     06-12-2021-16:03/

私に必要なのは答えですこれ質問がありますが、時間/日付で並べ替えられています。

ここで答えを見てみましたが、役に立つものが見つかりませんでした。
https://superuser.com/questions/147027/how-can-i-sort-the-output-of-ls-by-last-modified-date
各サブディレクトリのサイズを要約するdu(ディスク使用量)コマンドフラグはありますか?
https://stackoverflow.com/questions/37272935/unix-command-size-of-directory-with-order-by-size
ディレクトリに保存された数量を再帰的に見つける方法は?

答え1

duフラグをサポートしている場合は片道--time

du --max-depth=1 --time | sort -k 2

2番目の例(再帰サイズを表示しない)の解決策は、次に-Sフラグを追加することですdu

ls -dt */ | while IFS= read -r dir; do du -Ssh "$dir"; done

しかし、このコマンドは複雑すぎます。次のように簡単に作成できます。

du -Ssh "$(ls -Qdt /*)"

答え2

du出力をパイプで接続して、sort -k 22番目の列に基づいて結果を並べ替えることができます。

du -h --max-depth=1 | sort -k 2

関連情報