Как рекурсивно сжать все файлы в целевой директории?

30

Я хотел бы знать, какую команду использовать для рекурсивного извлечения всех файлов в целевом каталоге? Я попытался использовать команду unzip, но она не сработала.

Я пробовал команду из Unzip все файлы ZIP в целевой папке?

user2028856
источник

Ответы:

15

Используя команды ниже. Замените <path_of_your_zips>путь к файлам ZIP и <out>папку назначения:

  • Для файлов GZ

    find <path_of_your_zips> -type f -name "*.gz" -exec tar xf {} -C <out> \;
    

    или

    find <path_of_your_zips> -type f -name "*.gz" -print0 | xargs -0 -I{} tar xf {} -C <out>
    
  • Для ZIP файлов

    find <path_of_your_zips> -type f -name "*.zip" -exec unzip {} -d <out> \;
    

    или

    find <path_of_your_zips> -type f -name "*.zip" -print0 | xargs -0 -I{} unzip {} -d <out>
    
AB
источник
Работает ли это с файлами .gz?
user2028856
1
улучшилось, теперь да :)
AB
2
Почему не -execнравится find . -type f -name "*.gz" -exec tar xzf {} -C <out> \;?
Эллиотт Фриш
1
работать только для файлов tarball, а не только для g-
zipped
1
сжат GZIP файлы , которые не битуминозных файлы не дают эту ошибку:tar: This does not look like a tar archive
Приостановлено до дальнейшего уведомления.
64

gunzipесть -rвариант. От man gunzip:

   -r --recursive
          Travel  the directory structure recursively. If any of the 
file names specified on the command line are directories, gzip 
will descend into the directory and compress all the files it finds
there (or decompress them in  the  case  of gunzip ).

Итак, если вы хотите, чтобы gunzipвсе сжатые файлы ( gunzipможно распаковывать файлы, созданные с помощью gzip, zip, compress, compress -H или pack) внутри каталога /foo/barи всех его подкаталогов:

gunzip -r /foo/bar

Это будет обрабатывать имена файлов с пробелами тоже.

heemayl
источник