2009年9月22日火曜日

find コマンドで該当するファイルを削除する

find コマンドで該当するファイルを削除する方法です。別に削除でなくてもいいんですけど、使いたい目的は削除が多いのかなと思います。他にもパーミッション(permission)の変更にも使えたりします。

使い方の例としては以下の通りです。

find . -name *.sh | xargs ls -l
find . -name *.sh | xargs rm -f
*.sh というファイルを検索し、それを rm コマンドで削除するというコマンドです。(実行するととんでもないことになるようなものなので、試行には十分注意して下さい。)まずは、ls コマンドで対象ファイルを表示してみて、rm コマンドで削除するほうがいいでしょう。

以下の通り、同様のことができます。
  1. 実行権のあるファイルの実行権を落とす
    find . -perm -ugo=x -type f | xargs ls -l
    find . -perm -ugo=x -type f | xargs chmod ugo-x
    permission が +g+x だけだとディレクトリも対象となってしまい、意図と違うので、-type f を付加します。
  2. group にあるパーミッションを other にも付加する
    find . -perm -g=r -type f | xargs ls -l
    find . -perm -g=r -type f | xargs chmod o+r
色々応用できると思います。

0 件のコメント: