特定の日付以降に訪問していないディレクトリを一覧表示するには、検索を使用しますか?

特定の日付以降に訪問していないディレクトリを一覧表示するには、検索を使用しますか?

このstatコマンドを使用して、ディレクトリに最後にアクセスした日付を表示してフォーマットします。これadate

find特定の日付より前に変更されたディレクトリを見つける方法はありますか?test

ベストアンサー1

シェルスクリプト

findsed、、、、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

アクセス時間の「自動」修正の説明

いくつかのテストを行った結果、場合によっては検索ディレクトリのアクセス日時が変更される可能性があることがわかりましたfindstatこれは、ディレクトリの内容が変更されたがディレクトリ自体のアクセス時間が更新されていない場合に発生するようです。

この場合、アクセス時間は現在時刻に設定されます。ただし、ディレクトリを再度検索すると、findアクセスstat日時は変わりません(ディレクトリに再度変更がない限り)。

おすすめ記事