printf を使用して、「find」の出力を正しく表にし、日付で並べ替えます。

printf を使用して、「find」の出力を正しく表にし、日付で並べ替えます。

gfindテキストファイルを見つけるためにMacOSで実行されています。

gfind結果のファイル名と生年月日を確認し、日付で並べ替えてページを付けようとします。これは可能ですか?

現在私は努力していますgfind . -name "*.txt" -printf "%f \t\t %Bc\n"

しかし、結果は次のようになります。

todo.txt         Fri Mar  4 17:47:41 2022
99AC1EF5-6BE3-556B-8254-84A8764819E0.txt         Fri Mar  4 17:49:08 2022
chrome_shutdown_ms.txt       Fri Mar  4 17:48:07 2022
index.txt        Fri Mar  4 17:48:05 2022
index.txt        Fri Mar  4 17:48:05 2022
index.txt        Fri Mar  4 17:48:06 2022
index.txt        Fri Mar  4 17:47:46 2022
index.txt        Fri Mar  4 17:48:01 2022
index.txt        Fri Mar  4 17:48:01 2022
index.txt        Fri Mar  4 17:48:05 2022
index.txt        Fri Mar  4 17:48:05 2022
index.txt        Fri Mar  4 17:48:06 2022
index.txt        Fri Mar  4 17:48:06 2022
index.txt        Fri Mar  4 17:47:46 2022
index.txt        Fri Mar  4 17:48:06 2022
LICENSE.txt          Fri Mar  4 17:48:07 2022
english_wikipedia.txt        Fri Mar  4 17:48:07 2022
female_names.txt         Fri Mar  4 17:48:07 2022
male_names.txt       Fri Mar  4 17:48:07 2022

出力の一貫性を示すために出力を表にする方法はありますか?ファイル名と誕生日をもう少しエレガントに表示したいです。

よろしくお願いします!

答え1

ここでは以下を使用できます。

gfind . -name '*.txt' -printf '%-40f %Bc\n'

または

gfind . -name '*.txt' -printf '%40f %Bc\n'

ファイル名を左右に並べ替え、スペースで埋め、長さ40バイト(残念ながら文字や列で​​はない)を印刷します。

ファイル名は、制御文字、マルチバイト文字、幅0の文字、または二重幅文字を含まず、40バイトを超えない限りソートされます。

日付を最初に入力すると(Btime(%B)ではなくmtime(%T)を使用)、ファイルの寿命に役立つ情報がまったく反映されないため、これが必要なものかどうか疑われます。標準のYYYY-MM-DDTHH:MM:SS [.subsecond] + ZZZZなど、より便利で明確なタイムスタンプ形式を使用すると、ソートを心配する必要がなく、ソートが簡単になります。

find . -name '*.txt' -printf '%TFT%TT%Tz %f\n'

関連情報