Как рекурсивно сжать все файлы в целевой директории?
Я хотел бы знать, какую команду использовать для рекурсивного извлечения всех файлов в целевом каталоге? Я попытался использовать команду unzip, но она не сработала.
Я пробовал команду из Unzip все файлы ZIP в целевой папке?
2 ответа
Решение
Используя команды ниже. замещать <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>
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, сжатие, сжатие -H или pack) внутри каталога /foo/bar
и все его подкаталоги:
gunzip -r /foo/bar
Это будет обрабатывать имена файлов с пробелами тоже.