2016-02-04 2 views
1

У меня есть каталог, в котором новые файлы .zip размещаются каждый день. Мне нужно найти новые файлы за последний день и разархивировать файлы каждый в свой собственный каталог в другом месте. То, что я нашел с большим поиском, почти делает это для меня.find -exec разархивировать несколько файлов .zip, каждый в свою собственную директорию, где источник и назначение разные

find /source1/source2/source3 -maxdepth 1 -type f -mtime -1 \ 
    -exec sh -c 'unzip -d /dest1/dest2/"${1%.*}" "$1"' _ {} 

Проблема с вышеуказанной линии, является каталог назначения он пытается создать в /dest1/dest2/source1/source2/source3/(dir that is the filename of the zip)/{unzipped files} мне это нужно, чтобы быть просто /dest1/dest2/{filename}

Есть ли способ лишить исходные каталоги из переменной ${1%.*} ? Или, если есть лучший способ сделать это, я открыт для любого предложения.

ответ

0

Вы можете удалить исходные каталоги с помощью basename. Просто замените "${1%.*}" на $(basename "${1%.*}").

+0

, который сделал шаг ближе, но в папке назначения мне нужно, чтобы каждый почтовый индекс распаковывался в свою папку. выше работало, но оно сбрасывало все почтовые индексы в одну папку. – Sanren

+0

Каково название папки, в которую были загружены все файлы, и какое имя она должна иметь вместо этого? – phlogratos

+0

Я должен был уточнить в исходном вопросе, мне нужен пункт назначения/dest1/dest2/(dir, который является именем файла zip)/{распакованные файлы} – Sanren

Смежные вопросы