目的
- カレントディレクトリより下にある全ディレクトリ・全ファイルを再帰的に検索して,特定の条件を満たすファイルだけをカレントディレクトリにコピーしたい.
方法
-
find
コマンドに-exec
オプションをつける.
使用例
カレントディレクトリ直下にある全てのpngファイルを~/dest
というディレクトリにコピーする
find . -name "*.png" -exec cp {} ~/dest/ \;
- 解説
-
cp
直後の{}
に検索結果のファイル名のリストが格納される. - 最後の
\;
は-exec
の終わりを表す記号.末尾に必ずつける.
-
- 応用例
- 他の動作:
-
cp
をmv
に変更すれば移動・リネーム -
cp
をrm
に変更すれば削除
-
- ワイルドカードの使用:
-
"*.png"
を"hoge*/*.png"
に変更すれば,ファイル名がhoge
で始まるすべてのpng
ファイルが操作対象になる. -
find .
の部分をfind foo
に変更すれば,カレントディレクトリ直下ではなくfoo
というディレクトリ直下のファイルが操作対象になる.
-
- 確認しながら操作
-
-exec
を-ok
に変更すれば,操作を行う前に逐一確認できる-
find foo -name "hoge*" -ok mv {} ~/dest \;
と書けばfoo
ディレクトリ直下にある,ファイルがhoge
から始まる全てのファイルに対して1個ずつ「移動しますか?」と確認されyes
と入力すれば移動される
-
-
- 他の動作: