web-dev-qa-db-ja.com

正規表現を使用してTARアーカイブからファイルを除外する方法

簡単な質問がありますが、答えを見つけることも解くこともできません。 tarアーカイブを作成したいのですが、正規表現を使用していくつかのファイルをアーカイブから除外したいと考えています。

除外するファイルの例は次のとおりです:68x640X480.jpg

私は運なしでこれを試しました:

tar cvf test.tar --exclude=[0-9]+x[0-9X]+\.jpg /data/foto

誰か助けてもらえますか?

10
Frodik

findegrepなどの追加ツールを使用できます。

find directory/ -type f -print | egrep -v '[0-9]+x[0-9X]+\.jpg' | tar cvfz directory.tar.gz -T -

上記の方法の欠点は、すべての可能なファイル名に対して機能しないことです。もう1つの機会は、tarの組み込みの除外機能を使用することです。

tar -czvf directory.tar.gz --exclude='*x*X*.jpg' directory

残念ながら、2番目の方法は正規表現では機能せず、ワイルドカードでのみ機能します。

11

多分あなたはcpioを試すべきです

http://cybertiggyr.com/cpio-howto

ファイルリストから読み込んでアーカイブします。以下のようにsedを使用してファイルリストを生成できます。

ls |sed   '/[0-9]*x[0-9]*X.*/d' >/tmp/files

その後、それをcpioへの入力として使用できます。

0
nitins