Разархивировать все ZIP-файлы в целевой папке?
У меня есть curl cronjob, который периодически загружает кучу zip-файлов в целевую папку. Как это:
curl www.zipdownloadfile.com/file.zip > file.zip
Теперь мне нужно, чтобы Ubuntu разархивировал все zip-файлы в этой целевой папке.
Какая команда должна разархивировать все файлы в целевой папке / папке?
Спасибо
2 ответа
Вот ваш командный человек, это разархивирует весь zip-файл в файле назначения
find /path-to-folder -name '*.zip' -exec unzip -d destination_folder {} +
Просто попробуйте.
Проблема в том, что unzip *.zip
не работает по какой-то причине. Я предполагаю, что распаковка не принимает аргументы подстановочного пути для файлов.
Ответ Nux хороший, но я использую немного другую версию команды find. Если вы перейдете в папку, в которую вы скачали все zip-файлы, вы можете просто запустить:
find . -type f -name "*.zip" -exec unzip {} \;
Это будет искать текущий рабочий каталог и все подкаталоги рекурсивно с .
, а затем найти только файлы, -type f
, затем найдите что-нибудь с именем *.zip with
-названиеand it will execute unzip
exec распаковатьand substitute the result of the search which is the full file name and place it with
{}after the unzip command as the argument.
\; `это просто магический синтаксис, чтобы сказать:" Я закончил, команда закончена ".
Это все еще работало для меня в Ubuntu 16.04, чтобы распаковать все файлы в текущем каталоге после загрузки огромного количества.
Аналогичная команда может также использоваться для отмены набора rar-файлов, которые вы скачали одновременно:
find . -type f -name "*.rar" -exec unrar x -e {} \;
Приведенная выше магическая команда будет искать все файлы в текущем каталоге и все папки и файлы рекурсивно в подкаталогах, чтобы найти все файлы, которые заканчиваются на .rar
а затем распаковать их прямо в текущий рабочий каталог.
Допустим, вы хотите распаковать кучу вещей, которые вы только что скачали:
Fri Nov 17 10:56 AM Downloads: tree .
.
├── download1
│ ├── show01.r00
│ ├── show01.r01
│ ├── show01.r02
│ └── show01.rar
├── download2
│ ├── movie01.r00
│ ├── movie01.r01
│ ├── movie01.r02
│ ├── movie01.r03
│ └── movie01.rar
└── download3
├── program01.r00
├── program01.r01
├── program01.r02
├── program01.r03
└── program01.rar
3 directories, 14 files
Это лишь небольшой пример, в котором у вас может быть 20 или даже 40 разных папок, каждый из которых содержит собственный мастер-файл.zip или.rar, который необходимо разархивировать. Внедрение компакт-диска в каждый отдельный каталог для загрузки с использованием "unrar" требует много времени и затрат. Просто используйте команду поиска!
sudo apt-get install unzip
sudo apt-get install unrar
cd ~/Downloads
find . -type f -name "*.rar" -exec unrar x -e {} \;
find . -type f -name "*.zip" -exec unzip {} \;