.jpg / gif / png / wmv / flv / tar.gz / zip以外のすべてをtar.gzにする方法?


4

どうやって tar.gz から離れてすべて jpg/gif/png/wmv/flv/zips、再帰的に、Unixシェルを介して?

回答:


5

使用 --exclude オプション:

tar czvf myarchive.tar.gz --exclude=\*.{jpg,gif,png,wmv,flv,tar.gz,zip} rootdir

gnu tarを実行していることを確認してください。そうでなければこのフラグは存在しません。 Solarisでは、除外ファイルを指定することもできます。
Darren Hall

2
find -type f -a ! \( \
                     -name '*.jpg' -o \
                     -name '*.gif' -o \
                     -name '*.png' -o \
                     -name '*.wmv' -o \
                     -name '*.flv' -o \
                     -name '*.tar.gz' -o \
                     -name '*.zip' \) \
 | xargs tar rvfz files.tgz

これをシェルスクリプトやシェル関数にした場合に備えて、後で編集しやすくするために複数行を使用しました。

ファイル数がxargsへの1回の呼び出しを超える場合に備えて、tarに-rフラグを使用します。こうすれば、tarの引数バッファを超えることはできません。


2

  find ./ -type f | egrep -v "\.(jpg|gif|png|wmv|flz|zips)$" | xargs tar -czf filename.tgz

1
"zips"の誤字があった可能性があるので、それに応じて編集
Kevin Lochner

1
あなたはそこで最後に$になりたいですか?あなたのegrepはjpg.txtを除外しませんか?
Suppressingfire

2
引数の長さがtarの2倍になるほど長い場合、tar(c)reate + xargsは危険です。
Darren Hall
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.