4

как мне tar.gz все, кроме jpg/gif/png/wmv/flv/zips , рекурсивно, через оболочку Unix?

3 ответа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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .