使用以下命令,我能夠列出相對於當前目錄的所有目錄以及上次修改的紀元時間:
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
- 加入
-mindepth 1
去掉.
其中深度==0的 - 替代方案:使用
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-printf
列印最後修改日期(%Cs
相當於stat
s%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