stat 命令格式將“/”附加到檔案名稱(如果是目錄),並從前面刪除“./”

stat 命令格式將“/”附加到檔案名稱(如果是目錄),並從前面刪除“./”

使用以下命令,我能夠列出相對於當前目錄的所有目錄以及上次修改的紀元時間:

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你根本不需要!

  • 使用finds bultin-printf列印最後修改日期(%Cs相當於stats %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

相關內容