Ответ 1
for f in *.zip; do
dir=${f%.zip}
unzip -d "./$dir" "./$f"
done
У меня есть каталог, полный zip файлов. Каждый из них называется "files1.zip". Мой инстинкт заключается в использовании цикла bash for для распаковки каждого файла.
Проблема в том, что многие из файлов будут распаковывать содержимое прямо в родительский каталог, а затем разворачивать все в свой собственный уникальный каталог. Итак, я получаю файловый суп.
Я хотел бы убедиться, что "files1.zip" выливает все его файлы в директорию с именем "files1" и т.д.
В качестве дополнительного осложнения некоторые имена файлов имеют пробелы.
Как я могу это сделать?
Спасибо.
for f in *.zip; do
dir=${f%.zip}
unzip -d "./$dir" "./$f"
done
Простой один вкладыш
$ for file in `ls *.zip`; do unzip $file -d `echo $file | cut -d . -f 1`; done
вы можете использовать -d для распаковки в другой каталог.
for file in `echo *.zip`; do
[[ $file =~ ^(.*)\.zip$ ]]
unzip -d ${BASH_REMATCH[1]} $file
done