У меня есть список с путем к файлам .zip, собранный командой ниже. Я хочу разархивировать их в тот каталог, где они существуют.
find . -name "*.zip" -print > outfile.txt
outfile.txt похож на:
./TWO/two.zip
./ONE/one.zip
У меня есть скрипт run_all
для его автоматизации, но как я могу определить выходной каталог?
run_all outfile.txt 'unzip -u $1'
Используйте флаг -d
.
unzip -d output_dir/ zipfiles.zip
Чтобы автоматизировать это:
#!/bin/bash
for i in `cat outfile.txt`; do
output_dir=$(dirname $i)
unzip -d $output_dir $i
done
РЕДАКТИРОВАТЬ: Как предполагает @dessert, вы можете сделать это как лучшую альтернативу:
while IFS='' read -r i || [[ -n "$i" ]]; do unzip -d ${i%/*} $i; done <outfile.txt