回答:
使用しないでくださいls
、これは次の仕事ですstat
:
stat -c '%y' filename
-c
特定の出力を取得できます。ここで%y
は、人間が読める形式のファイルの最終変更時刻を取得します。エポックが使用してから秒単位で時間を取得するには%Y
:
stat -c '%Y' filename
ファイル名も必要な場合は、次を使用します%n
。
stat -c '%y : %n' filename
stat -c '%Y : %n' filename
必要に応じてフォーマット指定子を設定します。チェックman stat
。
例:
% stat -c '%y' foobar.txt
2016-07-26 12:15:16.897284828 +0600
% stat -c '%Y' foobar.txt
1469513716
% stat -c '%y : %n' foobar.txt
2016-07-26 12:15:16.897284828 +0600 : foobar.txt
% stat -c '%Y : %n' foobar.txt
1469513716 : foobar.txt
次のような出力が必要なTue Jul 26 15:20:59 BST 2016
場合は、エポック時間を次の入力として使用しますdate
。
% date -d "@$(stat -c '%Y' a.out)" '+%a %b %d %T %Z %Y'
Tue Jul 26 12:15:21 BDT 2016
% date -d "@$(stat -c '%Y' a.out)" '+%c'
Tue 26 Jul 2016 12:15:21 PM BDT
% date -d "@$(stat -c '%Y' a.out)"
Tue Jul 26 12:15:21 BDT 2016
date
の形式指定子をチェックして、必要に応じてください。も参照してくださいman date
。
私は試した
ls -l $filename | cut -d ' ' -f '6-8'
ただし、日付が10未満の場合、時刻が欠落します。これは、10未満の場合、日付の前に余分なスペースがあるためです。これを試してください。
filename="test.txt"
ls -l $filename | awk -F ' ' '{print $6" "$7" "$8}'
awkコマンドは、すべてのスペース(-F '')で区切られたフィールドを出力します。それがうまくいくことを願っています。私はこれが元の質問に答えていないことを知っていますが、日付と時刻についてのlsコマンドの説明だけです。「ubuntu get date and time of file」をGoogleで検索すると、この質問が一番上に表示されます。これは私が探していたものです。年も必要ないからです。年、日付、および時刻については、以下のコマンドのいずれかを試すことができます。%mは月番号を出力します。%bは月の省略形を出力します:時間と分が必要ない場合は、%H:%Mを削除します。%-dは、月の最初のゼロを出力しません。
date -r $filename +"%Y %m %-d %H:%M"
date -r $filename +"%y %m %-d %H:%M"
date -r $filename +"%Y %b %-d %H:%M"
date -r $filename +"%y %b %-d %H:%M"
ls
システム間で一貫して実装されていないため、いかなる自動化にも使用しないでください。代わりに、使用は、次のようなコマンドstat
やfind
時にスクリプトを書きます。