GNU/Linux >> Linux の 問題 >  >> Linux

X よりも古いすべてのファイルを含むディレクトリを検索しますか?

プロセス置換などを使用してファイルを作成せずにこれを行うことはおそらく可能ですが、ここに簡単な解決策があります:

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 検索では -- %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 日以内にファイルが変更されていないディレクトリが出力されます。


Linux
  1. 1つのファイルを除くすべてのファイル/ディレクトリを削除しますか?

  2. 検索で特定のサブディレクトリを除くすべてのファイルを削除しますか?

  3. 現在のディレクトリのすべてのファイル名で1つの文字を別の文字に置き換える方法は?

  1. Linuxでfdコマンドを使用してファイルを検索する方法

  2. Linuxで.rbで終わるすべてのファイルを見つける方法は?

  3. サブディレクトリを含む x 日より古いファイルを削除する Bash スクリプト

  1. Linuxでファイルとディレクトリを圧縮する方法(例付き)

  2. 1 分以上経過したすべてのファイルを検索

  3. 削除されたビジーボックスを備えたシステムで x 日より古いファイルを見つける