このstat
コマンドを使用して、ディレクトリに最後にアクセスした日付を表示してフォーマットします。これadate
find
特定の日付より前に変更されたディレクトリを見つける方法はありますか?test
ベストアンサー1
シェルスクリプト
find
sed
、、、、sort
(およびecho
「使用」部分)のみを使用して、次のシェルスクリプトを試すことができます。find
できることはできるstat
。唯一の違いは、!
テストを無効にする文字の1つです-newerat
。
olderdate
:
#!/bin/bash
if [ $# -ne 2 ]
then
echo "Usage: $0 <reference date> <directory> "
echo "Example: $0 2018-11-30 ."
exit
fi
find "$2" -type d ! -newerat "$1" -printf "%AY-%Am-%Ad %AT %p\n" |
sed -e 's%\..* /% /%' \
-e 's%\..* \.% .%' | sort
newerdate
:
#!/bin/bash
if [ $# -ne 2 ]
then
echo "Usage: $0 <reference date> <directory> "
echo "Example: $0 2018-11-30 ."
exit
fi
find "$2" -type d -newerat "$1" -printf "%AY-%Am-%Ad %AT %p\n" |
sed -e 's%\..* /% /%' \
-e 's%\..* \.% .%' | sort
日付だけでなく時間も指定するかhours
、2番目の引数を引用するhours:minutes
場合hours:minutes:seconds
./olderdate '2018-12-19 18' /path
アクセス時間の「自動」修正の説明
いくつかのテストを行った結果、場合によっては検索ディレクトリのアクセス日時が変更される可能性があることがわかりましたfind
。stat
これは、ディレクトリの内容が変更されたがディレクトリ自体のアクセス時間が更新されていない場合に発生するようです。
この場合、アクセス時間は現在時刻に設定されます。ただし、ディレクトリを再度検索すると、find
アクセスstat
日時は変わりません(ディレクトリに再度変更がない限り)。