findを使用して、現在のターミナルセッションが開始されてから変更された現在のディレクトリ以下のすべてのファイルのリストを表示する方法を見つけようとしています。
明らかに再帰検索を使用したいのですが、ログイン後に変更されたファイルのみを表示する結果をどのように説明しますか?ログイン時に常に変更される他のファイルと比較して確認したいですか?組み込みメソッドがありますか?
次のように教えてください。
find . -newer 'xxxx'
ここで、xxxxはターミナルセッションの開始時に変更されたファイルです。しかし、どのファイルがこれを行うことができますか?
答え1
この目的に使用できる特定のファイルはありませんが、直接追加するのは簡単です。
あなた.profile
や.bash_profile
あなたができることすべてから
TIMEFILE=$HOME/.lastlogin
[[ ! -f $TIMEFILE ]] && touch $TIMEFILE
find $HOME -newer $TIMEFILE
touch $TIMEFILE
この行は、ファイルが存在しない場合の文句を[[
防ぐために存在します。find
編集:ああ、申し訳ありません。ご質問を少し誤解している可能性があります。いつでもこのコマンドを実行できるので、この場合.bash_profile
touch $HOME/.lastlogin
今コマンドラインから
find $HOME -newer $HOME/.lastlogin
touch
ファイルを再送信していつでもタイマーをリセットできます。
答え2
Bashでは、を使用してログインから経過した時間を計算できますlast
。
TIMEDIFF=$(( ( $(date --date="$(last -1 | head -n 1 | tr -s " " | cut -d" " -f3-6)" +%s) - $(date +%s) ) / 60 ))
これにより負の数が生成されます。 (これは次のステップで役に立ちます。)
次に、-mmin
コマンドに視差とパラメータを追加しますfind
。
find . -mmin $TIMEDIFF
もちろん、1行にすることもできます。