2日未満のファイルを表示するコマンドとは具体的に何ですか?私はこのようなものについて考えました:
$ find / -mtime -2
...しかし、見つかったファイルの日付を出力する方法がわかりません。私の目標は、マウントされたntfsシステム上のファイルで、最近数日のうちに新規または変更されたものを見つけることです。
さらに、結果を新しいものから最も古いものに並べ替えると非常に役立ちます。それは可能ですか?
48時間以内に作成または変更されたファイル
新しいものから古いものへと並べ替えられました:
find / -mtime -2 -printf "%T@" -ls | sort
見つけた %T@
からman find
:最終変更時間(エポックからの秒数)
Xargsにパイプする場合、ls
の出力/フォーマットオプションを簡単に調整して、日付を表示したり、日付でソートしたりできます。
find / -type f -mtime -2 -print0 | xargs -0 ls -lt
(注:質問の1文は元々、テキストで2日より前の日付を求めていましたが、見出しは逆でした。出力をソートする必要性は後で紹介されました)。
find / -mtime -2 -ls
+2を指定すると、2日より古いファイル、-2を指定すると2日未満、2を指定すると2日だけ古いファイルが表示されます。
-lsを使用すると、ls -lのような出力が得られ、ファイルの日付を確認できます。
find / -ctime -2 -ls
Mtimeの代わりにctimeを使用すると、変更日ではなく作成日を取得しますが、/ etc/fstabのファイルシステムの機能と設定によっては、これが機能する場合と機能しない場合があります。
これは、zshでは glob qualifiers のおかげで簡単です。
print -l /**/*~/(proc|dev|sys)/*(m-2om)
過去2日間に変更された/
または/proc
または/dev
のファイルを除く、/sys
のすべてのファイルが一覧表示されます(m-2
)。ファイルは、変更日時の新しい順に(om
)、1行に1つ(print -l
)表示されます。
ファイルのメタデータも一覧表示する場合は、シェルで並べ替える必要はなく、フィルターのみを適用します。一致するファイルが多すぎる場合、プラットフォームに依存するコマンドラインの長さの制限に遭遇する可能性があります。
ls -dlt /**/*~/(proc|dev|sys)/*(m-2)
通常のファイルのみを照合する場合は、括弧内に.
を追加します。
POSIXツールのみを使用すると、ls -dlt
を使用してソートし、find
を使用してファイルリストを生成できます。この場合も、一致するファイルが多すぎると、プラットフォームに依存するコマンドラインの長さの制限に遭遇する可能性があります。通常のファイルのみを照合する場合は、-type f
の前または後にmtime -2
を追加します。
find / -mtime -2 -exec ls -dlt {} +