ファイルをファイル名などで検索して消すことが度々あるのですが、毎度忘れて検索するので備忘録としてまとめちゃいます。
テンプレ
find {検索したいファイルパス} {検索条件} -exec {追加で行いたいコマンド} \;
サンプル
名前にhoge
を含むファイルを見つけて消したい
find ./ -name "*hoge*" -type f -exec rm -f {} \;
-exec
がポイントで、見つけたファイルに対して操作することができます。 {}
には見つかったファイルのファイルパスが入り rm -rf {ファイル名}
となって消されます。複数ファイルが見つかった場合はループになります。
\;
は無いとエラーになります。「-exec
による処理はここまでだよ」と教えています。
名前にfuga
を含むディレクトリを見つけてtest
というprefixをつけたい
find ./ -name "*fuga*" -type d -exec mv {} test{} \;
ちょっとした応用です、そんなに大きく違うことはしていません。 {}
を複数使っているくらいです。
3日以上アクセスされていないファイルを消したい
find ./ -atime +2 -type f -exec rm -f {} \;
-atime +2
で最後にアクセスされた時間が2日より前、つまり3日以上前のファイルを抽出して消しています。
findコマンドの時間周りの検索は色々ややこしいです。ここでは割愛しますが、以下のサイトで解説されています。また気が向けばここでもまとめたいと思います。
まとめ
|
やxargs
コマンドで頑張ることもできますが、検索したものに対して操作するものはすでに用意されていたので楽にできます。そして忘れやすいので(\;
とか)ここに残しておきました。これで次から安心。
ちなみにxargs
の活用例はこちらです。↓