Я загрузил более чем 7 000 электронных книг с Проекта Гутенберг, но у меня есть проблема. Каждая книга была помещена в свой собственный zip-файл, и каждому zip-файлу дали ее собственную папку. Моя проблема состоит в том, что я не хочу должным быть пройти каждый файл и разархивировать их и положить электронные книги на одно место вручную. Если я могу получить zip-файлы в одном месте, это будет легкое задание для распаковки всех их с одной командой.
Так, как я получаю свои файлы в одну папку, вместо в их собственных подпапках?
Предположение, что все каталоги, которые содержат zip-файлы, имеют общего родителя, Вы могли использовать find
для нахождения всех zip-файлов затем выполняются, разархивировали на тех файлах, указывающих каталог для извлечения файлов к:
find /path/under/zip/folders -name "*.zip" -exec unzip {} -d /target/path \;
Подстановочный подход может быстро стать грязным, если существуют больше, чем единственный уровень вложенных папок...
Я обычно выполняю подобные задачи (и большинство других операций файла) использование Полуночного Командующего. Установите его использование
sudo apt-get install mc
Затем только запустите его путем ввода 'мГц', перейдите к папке, в которой находятся электронные книги, поразите Esc, затем Ctrl-?, введите критерии поиска в хите окна результата [Panelize]. Теперь можно выбрать все zip путем нажатия * и копировать/перемещать их в каталог в другой области путем удара F5 или F6
У Вас есть опыт с помощью подстановочных знаков? Вы могли сделать что-то как
mv common_part_of_folder_name*/*.zip .
где символ звездочки в основном означает "что-либо". Если у Вас только есть gutenberg в Вашем каталоге, можно просто работать
mv ./*/*.zip .
получить все zip-файлы в Ваш текущий каталог. Если это намного более сложно, чем это, Perl или сценарий оболочки могли бы быть способом пойти.