2

次のシェル スクリプトを使用して、すべてのファイルの時間を出力しようとしています。しかし、ユーザー名やその他の詳細のバイト数が多い/少ないために変化するため、常にバイト 42 から 46 が時間であるとは限りません。時間を取得する別の方法はありますか?

#!/bin/sh
for file in `ls `
do
    #echo `ls -l $file`
    echo `ls -l $file | cut -b 42-46`
done
4

2 に答える 2

5

awk を使用します。

試すls -l | awk '{ print $6 $7 $8}'

これにより、ls -l の 6 番目、7 番目、8 番目のフィールドが空白で分割されて出力されます。

フィールドが異なる場合は、数値を変更してフィールドを調整します。

于 2012-09-05T03:55:05.727 に答える
2

からの出力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

男の統計

于 2012-09-05T04:39:27.717 に答える