回答:
使用 --exclude
オプション:
tar czvf myarchive.tar.gz --exclude=\*.{jpg,gif,png,wmv,flv,tar.gz,zip} rootdir
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の引数バッファを超えることはできません。
find ./ -type f | egrep -v "\.(jpg|gif|png|wmv|flz|zips)$" | xargs tar -czf filename.tgz