Linuxでファイルの最終変更日を取得する


149

私はLinuxが初めてです。コマンドラインを使用しています。ファイルの最終変更日を表示しようとしています。Linuxでコマンドラインからそれを行うにはどうすればよいですか?


25
ls -lまた動作します...
ダニエルベック


1
@DanielBeckは、ls -l変更された日付または作成日の日付ですか?
ブルーノビエリ

1
@BrunoBieriそれは修正日です。をご覧くださいman ls。典型的なLinuxファイルシステムは、作成日を追跡することすらありません。追跡される日付の種類については、受け入れられている回答を参照してください。
ダニエルベック

回答:


133

@ edvinas.meで述べたようにstat、最終変更日を含むファイルに関するさまざまな情報を伝えます。

最初は、出力リストを明確にするために、ModifyChangeと混同してstatいました。

  • アクセスには、最後のデータアクセス(読み取りなど)の時間が表示されます。
  • 変更は、最後のデータ変更の時刻を示します。
  • 変更は、ファイルステータスが最後に変更された時刻を示します。

例えば:

~ $ touch foo
~ $ stat foo
File: ‘foo’
Size: 0             Blocks: 0          IO Block: 4096   regular empty file
Device: fc01h/64513d    Inode: 410397      Links: 1
Access: (0644/-rw-r--r--)  Uid: (80972/ etomort)   Gid: (18429/  eem_tw)
Access: 2015-09-21 12:06:11.343616258 +0200
Modify: 2015-09-21 12:06:11.343616258 +0200
Change: 2015-09-21 12:06:11.343616258 +0200
Birth: -

~ $ echo "Added bar to foo file" >> foo
~ $ stat foo
File: ‘foo’
Size: 42            Blocks: 8          IO Block: 4096   regular file
Device: fc01h/64513d    Inode: 410654      Links: 1
Access: (0644/-rw-r--r--)  Uid: (80972/ etomort)   Gid: (18429/  eem_tw)
Access: 2015-09-21 12:09:31.298712951 +0200
Modify: 2015-09-21 12:09:31.298712951 +0200
Change: 2015-09-21 12:09:31.302713093 +0200
Birth: -

~ $ chmod 444 foo
~ $ stat foo
File: ‘foo’
Size: 42            Blocks: 8          IO Block: 4096   regular file
Device: fc01h/64513d    Inode: 410654      Links: 1
Access: (0444/-r--r--r--)  Uid: (80972/ etomort)   Gid: (18429/  eem_tw)
Access: 2015-09-21 12:09:31.298712951 +0200
Modify: 2015-09-21 12:09:31.298712951 +0200
Change: 2015-09-21 12:10:16.040310543 +0200
Birth: -

65

そのためにstatコマンドを使用します:

$ stat file

27
あなたは(人間が読める形式で)ちょうど最終更新日時をしたい場合は、使用stat -c '%y' file
アダム・テイラー

35

より柔軟な別の方法は、を使用することdate -rです。からman date

-r, --reference=FILE
       display the last modification time of FILE

これには、出力形式を指定できるという利点があります。たとえば、

$ date -r foo
Thu Aug 31 10:36:28 AEST 2017
$ date -r foo -R
Thu, 31 Aug 2017 10:36:28 +1000
$ date -r foo -u
Thu Aug 31 00:36:28 UTC 2017
$ date -r foo +%s
1504139788

3
はい、とても助かります、ありがとう。変更された時刻を接頭辞とするファイルの名前を変更するbash関数を次に示します。function mvfilestime(){if [x "$ {1}" = "x"]; echo "mvfilestime:mvへのファイルの引数がありません" else f = $(date + "%Y-%m-%d-%H-%M" -r $ {1})-$ {1} echo mv $ {1} $ {f} mv $ {1} $ {f} fi}
トラベラー

完璧、受け入れられる答えであるべき
AB

15

ls -l 作業を行う必要があります。

例:

#> ls -l /home/TEST/
total 16

-rw-r--r--   1 rfmas1   nms          949 Nov 16 12:21 create_nd_lists.py

-rw-r--r--   1 rfmas1   nms            0 Nov 16 12:35 enb_list

-rw-r--r--   1 rfmas1   nms            0 Nov 16 12:35 nb_list

-rw-r--r--   1 rfmas1   nms            0 Nov 16 12:35 nodes_ip.txt

-rw-r--r--   1 rfmas1   nms            0 Nov 16 12:35 rnc_list

2

ファイルが別のWebサーバーにある場合、httpiedocs)が好きです。

設置

pip install httpie --user

使用法

-hコマンドは、ヘッダのみを与えます。パターンは

http -h [url] | grep 'Last-Modified\|Date'

例:

$ http -h https://martin-thoma.com/author/martin-thoma/ | grep 'Last-Modified\|Date'
Date: Fri, 06 Jan 2017 10:06:43 GMT
Last-Modified: Fri, 06 Jan 2017 07:42:34 GMT

これDateはローカル時間ではなくサーバー時間を報告するため重要です。また、すべてのサーバーが送信するわけではありませんLast-Modified(たとえば、スーパーユーザーは送信しないようです)。


2

1)最終更新日時を含むファイルディレクトリのリスト

ファイルをリストし、最後に変更されたファイルを上部に表示するには-ltlsコマンドでオプションを使用します。

$ ls -lt /run
output
total 24
-rw-rw-r--.  1 root utmp 2304 Sep  8 14:58 utmp
-rw-r--r--.  1 root root    4 Sep  8 12:41 dhclient-eth0.pid
drwxr-xr-x.  4 root root  100 Sep  8 03:31 lock
drwxr-xr-x.  3 root root   60 Sep  7 23:11 user
drwxr-xr-x.  7 root root  160 Aug 26 14:59 udev
drwxr-xr-x.  2 root root   60 Aug 21 13:18 tuned

https://linoxide.com/linux-how-to/how-sort-files-date-using-ls-command-linux/


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