我怎样才能通过 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