it-swarm-ja.com

多くのファイルの作成時間と最終変更時間を取得する最速の方法

与えられた

  • ディレクトリ
  • このディレクトリに直接ファイルのサブセットを生成するshパターン(* .logなど)
  • ファイル名を指定すると、shパターン。

パターンでフィルタリングされた各ファイルを取得するための最速の方法(ksh単位)は何ですか?

  • その名前
  • 最後に変更された日時(つまり、テキストが追加された)
  • 作成された日時(ディレクトリに作成されたと仮定して、アクセスしたとき)

理想的には、次の両方で機能します。

  • AIX 6100-04-03-1009
  • Linux 2.6.18
  • SunOS 5.10
2
Pierre Gardin

Posixファイルシステムノードには通常、次の3つの時間属性があります。

  • atime(アクセス時間)-ファイルが最後に読み取られたのはいつですか
  • mtime(変更時刻)-最後に書き込まれたのはいつですか。
  • ctime(変更時間)-iノード(メタデータ)が変更されたのはいつですか。

ctime属性は、作成時間と誤解されることが多く、場合によっては、人々を混乱させる傾向があります。

POSIXシェルには、これら3つの属性を抽出する標準的な方法がなく、lsコマンドに依存します。 _ls -l $file_は、デフォルトで変更時間を示します。

  • _ls -lc $file_はctimeを示しています
  • _ls -lu $file_はatimeを示しています

GNU/Linuxシステムを使用している場合は、一貫した出力のために_ls --time-style=full-iso_または別のiso形式を使用することをお勧めします。

Perlおよびその他のスクリプト言語では、ファイルにアクセスしてその属性にアクセスする方が簡単です stat() 。 Perlには、ファイルシステムに対してmtimeatime、およびctimeを返す_-M_、_-A_、および_-C_演算子もあります。オブジェクト。ただし、時間オフセットに注意してください。 Perlは、プロセスの開始時間に関連する時間を報告する傾向があります。

2
Henk Langeveld

Awk/sedを作成しなかったことをお詫びしますが、statコマンドは、アクセス、変更、および変更された時間を提供します。それはあなたのためにグロブになります。 AIXで動作するかどうかはわかりませんが、現在はアクセスできません。

0
Sirch