как мне tar.gz
все, кроме jpg/gif/png/wmv/flv/zips
, рекурсивно, через оболочку Unix?
3 ответа
5
Используйте параметр --exclude
:
tar czvf myarchive.tar.gz --exclude=\*.{jpg,gif,png,wmv,flv,tar.gz,zip} rootdir
2
find ./ -type f | egrep -v "\.(jpg|gif|png|wmv|flz|zips)$" | xargs tar -czf filename.tgz
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
Я использовал несколько строк, чтобы потом было легче их редактировать, если вы превратили это в сценарий оболочки или функцию оболочки.
Я использую флаг -r для tar, если количество файлов превышает 1 вызов в xargs. Таким образом, вы не можете превысить буфер аргументов для tar.