過去 1 時間 (より正確には過去 60 分間) にディレクトリ内で変更されたファイルを見つけるために使用できる最も効率的なコマンドを教えてください。
または
そのアプローチが良くない場合は、現在の時刻をファイルの作成/変更のタイムスタンプと比較する方法を教えてください
ありがとう
タイムスタンプが 1 時間前のファイルにタッチし、find のオプション -newer を使用します。タッチ時間は、タイムゾーン トリック (GMT の例) で計算できます。
echo "$(TZ=GMT+1 date +%Y-%m-%d)"
だからあなたは次のようなことをします
HOUROLDFILE=/tmp/hourold.tmp
touch -t "$(TZ=GMT+1 date '+%y%m%d%H%M')" ${HOUROLDFILE}
find a_directory -newer ${HOUROLDFILE}
rm ${HOUROLDFILE}
find のオプションを使用します-newermt
。
find -newermt 'now -1 hour'
または単に
find -newermt -1hour
使用方法については、find のマニュアルを参照してください。
ksh の別の方法:
BEFORE=$(date -d '-1 hour' '+%s'); find -type f -printf '%T@ %p\n' | while read -r TS FILE; do TS=${TS%.*}; [[ TS -ge BEFORE ]] && echo "$FILE"; done
使用しない場合-d
:
BEFORE=$(( $(date '+%s') - 3600 )); find -type f -printf '%T@ %p\n' | while read -r TS FILE; do TS=${TS%.*}; [[ TS -ge BEFORE ]] && echo "$FILE"; done