Bash
列出包含行數和日期的文件
我希望能夠列出顯示每個文件的行數和日期的文件。我可以很高興地使用
wc -l *
. 不是問題。我可以使用ls -l
.有沒有辦法結合這兩個命令給我一個列中的輸出?
這是帶有
find
++的wc
東西date
。find . -maxdepth 1 -exec sh -c '[ -f "$0" ] && \ printf "%6s\t\t%s\t%s\n" "$(wc -l<"$0")" "$(date -r "$0")" "$0"' {} \;
代替
date -r
一個也可以使案例如stat -c%y
。輸出如下所示:
394 Thu Oct 16 22:38:14 UTC 2014 ./.zshrc 7 Thu Oct 30 11:19:01 UTC 2014 ./tmp.txt 2 Thu Oct 30 06:02:00 UTC 2014 ./tmp2.txt 40 Thu Oct 30 04:16:30 UTC 2014 ./pp.txt
以此為起點,可以創建一個接受目錄和模式作為參數的函式:
myls () { find "$1" -maxdepth 1 -name "$2" -exec sh -c '[ -f "$0" ] && \ printf "%6s \t\t%s\t%s\n" "$(wc -l<"$0")" "$(date -r "$0")" "$0"' {} \;; }
之後
myls /tmp '*.png'
將僅列出來自的圖像/tmp
(注意模式周圍的單引號以防止 shell 擴展 glob 運算符*
)。