Linuxで、含まれているすべてのファイルとディレクトリ(およびサブディレクトリのファイルなど)が特定の経過時間よりも古いディレクトリを見つけることは可能ですか?言い換えると、ディレクトリ内に、指定されたしきい値よりも新しい変更日を持つ1つ以上のファイルがある場合、そのディレクトリすべきではないがリストされます。そのディレクトリの下にあるファイルとフォルダのallが指定されたしきい値よりも古いである場合、そのディレクトリshouldがリストされます。
ユースケースは、私のホームディレクトリが隠しディレクトリでいっぱいであり、それらの多くが以前のインストールから残っていること、そして私が何年も使用していないソフトウェアであると確信しています。これらのディレクトリを見つけられるようにしたいので、それらをカリングするかどうかを簡単に決定できます。
プロセス置換などを使用してファイルを作成せずにこれを行うことはおそらく可能ですが、これが手っ取り早い解決策です。
find . -type f -mtime +30 -printf '%h\n' | sort | uniq > old.txt
find . -type f -mtime -30 -printf '%h\n' | sort | uniq > new.txt
grep -vf new.txt old.txt
最初のコマンドは、30日以上前に変更されたすべてのファイルのパスを出力します(findの-printf
-少なくともGNU find on my system --%h
実際のファイル名を除くパス全体を出力します)、次にそれらを並べ替えて重複を取り除き、すべてをold.txt
というファイルに入れます。
2番目のコマンドも同じことを行いますが、すべてのファイルが30日以内に変更され、別のファイルnew.txt
に配置されます。
Grep行は、new.txtに表示されないold.txtのすべての行を出力するため、30日以上前に最後に変更されたのみファイルを含むディレクトリのリストが表示されます。 。
これはすべてGNUバージョンのユーティリティを使用しています。構文がBSDバージョンなどで一致するかどうかはわかりません。
最後に、魔法のワンライナーを見つけました:
for dir in `find . -type d -mtime +30`; do test `find $dir -type f -mtime -30 -print -quit` || echo $dir; done
これにより、変更時間が30日を超え、過去30日以内にファイルが変更されていないディレクトリが出力されます。
これは機能するはずです:
for DIR in {the folder list}; do
if [[ $(find ${DIR} -mtime -10 -type f) == "" ]]; then
echo ${DIR}
fi
done
{フォルダリスト}内の10日より古いファイルを含むすべてのディレクトリを検索します。
基本的に、find ${DIR} -mtime -10 -type f
は、10日以内に変更されたすべてのファイル(-type f
)を検索します(-mtime -10
、これは-atime
または-ctime
とは異なります。を参照してください。詳細については、こちらをご覧ください: http://www.cyberciti.biz/faq/howto-finding-files-by-date/ )。そのようなファイルがディレクトリ内に見つからない場合、このディレクトリが10日より古いことがわかり、このディレクトリをecho ${DIR}
で出力します。
それが役に立てば幸い!
find -type f -mtime +30
30日以上経過したファイルをチェックする
-iname '.*'
を追加すると、隠しファイルが表示されます
またはディレクトリの場合は-type d
次の回避策を使用して、ニーズを実装できます。
$ touch -t 201206010100 some_file
$ find . -newer some_file
タッチマンページ:
-t STAMP
use [[CC]YY]MMDDhhmm[.ss] instead of current time
タッチの-dオプションもありますが、使用していません。試してみてください。
[編集]次のようにtouch-dオプションを使用して、特定の日付にファイルを生成できます。
$ touch -d "Wed Jun 27 09:44:44 EEST 2012" some_file
$ ls -l some_file
-rw-r--r-- 1 user user 0 2012-06-27 09:44 some_file
あなたは私が上で述べたのと同じアプローチを使うことができます