如何将除 .jpg/gif/png/wmv/flv/tar.gz/zip 之外的所有内容压缩为 tar.gz?

如何将除 .jpg/gif/png/wmv/flv/tar.gz/zip 之外的所有内容压缩为 tar.gz?

我怎样才能通过 Unix shell 以递归方式执行tar.gz除 之外的所有操作?jpg/gif/png/wmv/flv/zips

答案1

使用--exclude选项:

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

答案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

我使用了多行以便以后更容易编辑,以防您将其制成 shell 脚本或 shell 函数。

如果文件数量超过 1 次 xargs 调用,我会对 tar 使用 -r 标志。这样,您就不会超出 tar 的参数缓冲区。

答案3


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

相关内容