回答:
上の例では、 "touch"がディレクトリの時間を設定することは明確ではありません(リスト内の新しい時間は、タッチがディレクトリの作成直後なので、元の時間と同じでした)。 。はい、ドキュメントの「ファイル」の定義にはディレクトリが含まれているため、タッチを使用してタイムスタンプを変更できますが、...
他の操作を行う権限があっても、ディレクトリのタイムスタンプを変更できない場合があります(リモートでマウントされたディレクトリのタイプによっては)。たとえば、このNFSマウント:
$ touch -d "2014-07-02 12:15" /public/test.dir
touch: setting times of ‘/public/test.dir’: Operation not permitted
また、一部のサーバーで古い日付がサポートされていないなどの問題が発生する可能性があります。例:
$ mkdir /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Mar 11 17:40 /Acer/kopies/test.dir
これは機能します:
$ touch "2014-04-01 00:00" /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Apr 1 2014 /Acer/kopies/test.dir
これはローカルディレクトリで機能しますが、Sambaマウントでは奇妙な日付になります:
$ touch -d "1955-07-02 12:15" /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Nov 26 60410 /Acer/kopies/test.dir
~~~~~~~~~~~~~
touch
ファイルのアクセスと変更のタイムスタンプを変更するために使用される標準のUnixプログラムです。また、新しい空のファイルを作成するためにも使用されます。Single Unix Specification(SUS)は、touchがファイルのアクセス時間、変更時間、またはその両方を変更することを指定しています。ファイルは、単一の引数として指定されたパス名によって識別されます。また、識別されたファイルが存在しない場合、ファイルが作成され、アクセス時刻と変更時刻が指定どおりに設定されることも指定されています。新しいタイムスタンプが指定されていない場合、touchは現在の時刻を使用します。
-ウィキペディア
次のようなコマンドtouch
を使用すると、コマンド(または知りたい他のコマンド)の詳細情報を見つけることができますman
。
man touch
質問の直接の理由は、のデフォルトの時間解決がls -l
分単位であることです。そのため、同じ分内にタッチされたファイルシステムエントリは、デフォルトのls -l
出力でもまったく同じように表示されます。
これの解決策は/superuser/355318/how-to-have-linux-ls-command-show-second-in-time-stamp
で説明されており、基本的にls -l --time-style=full-iso
代わりに実行する必要があります。