各ファイルの行数と日付を表示してファイルを一覧表示したいと思います。を使用して幸せに行数を取得しますwc -l *
。問題ではない。を使用して日付を取得できますls -l
。
これら2つのコマンドを組み合わせて列に単一の出力を提供する方法はありますか?
ベストアンサー1
これは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
たとえば、選択肢の1つを使用することも可能です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
(シェルがグローバル演算子を拡張するのを防ぐために、パターンの周りの単一引用符を参照してください*
)。