次のコマンドを使用すると、現在のディレクトリに関連するすべてのディレクトリと、最後に変更されたエポック時間を一覧表示できます。
find . -exec stat -c '%n: %Y' {} \;
出力は次のようになります。
.: 1569247414
./a_file.txt: 1561624333
./some_folder: 1561624645
./some_folder/some_file.txt: 1561624645
./some_folder/another_file.txt: 1536557809
各エントリの先頭に表示される「./」を削除し、ディレクトリの場合は「/」を追加するにはどうすればよいでしょうか?
ボーナスとして、現在のフォルダーである最初のエントリ「.」を削除すると便利です。
乾杯
答え1
- 深さ==0を
-mindepth 1
削除するために追加します.
- 代替案:
find *
代わりに使用するfind .
- ファイルをフォルダから分離する
-type d ... -or -type f ...
- 複数のファイルを に送信するに
+
は、 の代わりにを使用します。 複数のファイルを処理でき、処理速度が大幅に速くなります。\;
stat
find * \
-type d -exec stat -c '%n/: %Y' {} + \
-or -type f -exec stat -c '%n: %Y' {} +
しかし...
-exec stat
まったく必要ありません!
- 最終変更日を出力するには、
find
s bultin を使用します( は'sと同等になります)。-printf
%Cs
stat
%Y
-printf '%P'
の代わりに を使用すると、各ファイル名の先頭の%p
を削除することもできます。./
find . -mindepth 1 \
-type d -printf '%P/: %Cs\n' \
-or -type f -printf '%P: %Cs\n'
出力:
a_file.txt: 1561624333
some_folder/: 1561624645
some_folder/some_file.txt: 1561624645
some_folder/another_file.txt: 1536557809