次のシェル スクリプトを使用して、すべてのファイルの時間を出力しようとしています。しかし、ユーザー名やその他の詳細のバイト数が多い/少ないために変化するため、常にバイト 42 から 46 が時間であるとは限りません。時間を取得する別の方法はありますか?
#!/bin/sh
for file in `ls `
do
#echo `ls -l $file`
echo `ls -l $file | cut -b 42-46`
done
awk を使用します。
試すls -l | awk '{ print $6 $7 $8}'
これにより、ls -l の 6 番目、7 番目、8 番目のフィールドが空白で分割されて出力されます。
フィールドが異なる場合は、数値を変更してフィールドを調整します。
からの出力ls
は、ファイルの経過時間によって異なります。約 6 か月未満のファイルの場合は、月、日、時刻 (時間と分) です。約 6 か月以上前のファイルの場合、月、日、年が表示されます。
このstat
コマンドを使用すると、より正確な時間を取得できます。
たとえば、一部のテキスト ファイルの最終変更時刻とファイル名を出力するには、次のようにします。
stat -c '%y %n' *.txt
マニュアルから:
%x Time of last access
%X Time of last access as seconds since Epoch
%y Time of last modification
%Y Time of last modification as seconds since Epoch
%z Time of last change
%Z Time of last change as seconds since Epoch