ファイルの変更時刻を表示する方法は?


35

bashスクリプト内で使用するために、ファイルの変更された時間を見つけて印刷する方法が欲しいのですが。

私は思いついた:

ls -l $filename | cut -d ' ' -f '6-8'

どの出力:

Jul 26 15:05

解析を回避lsしたいのですが、年を入れるのも便利です。

理想的には、dateコマンドのデフォルトの出力に似た出力を見たいです。

Tue Jul 26 15:20:59 BST 2016

他にどのような便利な方法が利用できますか?

回答:


46

使用しないでください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


5
この答えに加えて、lsシステム間で一貫して実装されていないため、いかなる自動化にも使用しないでください。代わりに、使用は、次のようなコマンドstatfind時にスクリプトを書きます。
水田ランダウ

1
優れた。私はこの小さな宝について知らなかった。* nix / linux環境にあるそれらの多くはまだ発見されていません。
ケン・イングラム

1

私は試した

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"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.