linuxファイル時間の表示と変更touch

2633 ワード

1.linuxファイルの時間


linuxでのファイル時間は主に以下の3種類があります.

1.1 modification time(mtime)


ファイル変更時間.つまり、ファイル内容の変更時に、この時間を更新します.ファイル権限と属性の変更は含まれません.
ls-lを使用して表示します.デフォルト表示時間はmtime
$ ls -l uconv.h
-rw-rw-r--  1 work work 1808 Jul 23  2013 uconv.h

1.2 status time(ctime)


ファイルステータスstatusの変更時間、例えばファイルの権限と属性が変更されたときにこの時間を更新します.
ls--time=ctimeで表示
$ ls -l --time=ctime uconv.h 
-rw-rw-r--  1 work work 1808 Jul 23  2013 uconv.h

1.3 access time(atime)


ファイルコンテンツが取得されると、ファイルアクセス時間.この時間を更新します.
ls--time=actimeを使用して表示
$ ls -l --time=atime uconv.h
-rw-rw-r--  1 work work 1808 Dec 12  2013 uconv.h

2.ファイルを変更する時間


上記3つの時間を変更する必要があると仮定し,touchコマンドを用いて変更する.
touch filenameファイルが存在しないと仮定して、新しいファイルを作成します.
$ touch --help
Usage: touch [OPTION]... FILE...
Update the access and modification times of each FILE to the current time.

  -a                     change only the access time
                               
  -c, --no-create        do not create any files
                                 ,       
  -d, --date=STRING      parse STRING and use it instead of current time
                                   
  -f                     (ignored)
  -m                     change only the modification time
                           mtime
  -r, --reference=FILE   use this file's times instead of current time
  -t STAMP               use [[CC]YY]MMDDhhmm[.ss] instead of current time
                               

例:
$ touch -d "2 days ago" uconv.h
$ ll uconv.h ; ll --time=atime uconv.h ; ll --time=ctime uconv.h ;
-rw-rw-r--  1 work work 1808 Jun 13 18:17 uconv.h
-rw-rw-r--  1 work work 1808 Jun 13 18:17 uconv.h
-rw-rw-r--  1 work work 1808 Jun 15 18:17 uconv.h
mtimeとatimeを2日前に変更し、ctimeは変わっていません.
$ touch -t 201406142020 uconv.h   

$ ll uconv.h ; ll --time=atime uconv.h ; ll --time=ctime uconv.h ;
-rw-rw-r--  1 work work 1808 Jun 14 20:20 uconv.h
-rw-rw-r--  1 work work 1808 Jun 14 20:20 uconv.h
-rw-rw-r--  1 work work 1808 Jun 15 18:23 uconv.h
atimeもmtimeも変わったがctimeは現在の時間になった.
cpコマンドを使用します.-a元の属性を保持する.
$ cp -a uconv.h uconv.h1

$ ll uconv.h1 ; ll --time=atime uconv.h1 ; ll --time=ctime uconv.h1 ;
-rw-rw-r--  1 work work 1808 Jun 14 20:20 uconv.h1
-rw-rw-r--  1 work work 1808 Jun 15 18:25 uconv.h1
-rw-rw-r--  1 work work 1808 Jun 15 18:27 uconv.h1
mtimeもatimeも元のファイルのままですがctimeは現在の時間になります
アドレス:http://blog.csdn.net/yonggang7/article/details/31008607