2007年02月13日

findで特定のフォルダを除く件

前にfindを使ってtarで固める件について書きました。
対象のディレクトリにtarに含めたくないディレクトリが出来てしまったので、それを除く件について調べてみました。

まず、否定から。
\! -name aaaa.txt
で、aaaa.txt以外という事になります。\はシェルのエスケープです。
ですが、
find -name xxxx

だと、
ファイルxxxxや、
ディレクトリxxxx/、
ファイルyyyy/xxxx
は見つけてくれますが、
xxxx/abcdefg.txt
は見つけてくれません。
つまり、
\! -name xxxx
としても、ディレクトリxxxx/の下のファイルは除外してくれないという事です。
で、便利なのが-regexです。
-regex '.*/iranai_dir/.*'
とすれば除外したいディレクトリ以下のファイルも見つけてくれます。

find ./public_html \
\( \
\( \
-name '*.php' \
-o -name '*.html' \
-o -name '*.inc' \
\) \
\! -regex './public_html/iranai_dir/.*' \
\) -exec tar cvf phpfiles.tar {} \;
という事です。


posted by ほえ at 11:08| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。