Извлеките несколько zip-файлов, каждого в новой папке с тем же именем, через терминал Ubuntu

У меня есть много zip-файлов a.zip, b.zip, c.zip... и я хочу извлечь каждого из них в новые папки a, b, c... соответственно, через терминал.

На самом деле то, что я хочу, является решением, которое я могу использовать позже с a find потому что у меня на самом деле есть много папок 2014, 2013, 2012... каждый из них содержащий много zip-файлов a.zip, b.zip, и т.д. Если я делаю find . -name "*.zip" -exec {} unzip \; это разархивирует все файлы и поместит их в их соответствующую родительскую папку.

37
задан 15 August 2016 в 16:27

4 ответа

Необходимо смочь использовать неzip -d опция установить альтернативный каталог для содержания архива.

unzip -d a a.zip
unzip -d b b.zip

и так далее. В a find выражение, необходимо смочь получить название каталога с названия zipfile, использующего расширение параметра оболочки, например.

find -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;

Протестируйте его сначала путем добавления echo т.е.

find -name '*.zip' -exec sh -c 'echo unzip -d "${1%.*}" "$1"' _ {} \;

или что-то как

while read -rd $'\0' f; do 
  unzip -d "${f%.*}" "$f"
done < <(find -name '*.zip' -print0)
72
ответ дан 23 November 2019 в 00:16

Я приехал, ища это сам, только чтобы понять, что я уже сделал это с другими командами, и к этому можно было относиться примерно что-либо еще, способ, которым я уже делал его.

метод находки сумасшедший сверхсложный ни по какой причине.

for i in *.zip; do unzip "$i" -d "${i%%.zip}"; done
10
ответ дан 23 November 2019 в 00:16

Просто Использование

unzip '*.zip' -d /home/user/folder/
6
ответ дан 23 November 2019 в 00:16

Я также должен был сделать это использование unrar. Это может быть достигнуто незначительной модификацией к коду kencinder.

for i in *.rar; do mkdir "${i%%.rar}"; unrar x -r "$i" "${i%%.rar}"; done 

PS: Я хотел добавить это как комментарий, но у меня нет достаточного количества точек репутации!

1
ответ дан 23 November 2019 в 00:16

Другие вопросы по тегам:

Похожие вопросы: