Конфигурация сервера vsftpd и пользователя

Проблема заключается в том, что нет хорошего способа разблокировать два расширения подстановочных знаков и перебрать их, как вы этого хотите. Поскольку вы хотите делать это только по одному файлу за раз, вам будет проще просто использовать find. Если вы хотите рекурсивно сделать это, я бы сделал find . -iname '*.pdf' -exec pdf3djvu -o '{}'.djvu '{}' \;. Если у вас есть только определенные каталоги, в которые вы хотите сделать это, придумайте шаблон оболочки, который будет расширяться до этих каталогов, и используйте это как аргумент для поиска вместо [ f4]. Например, если у вас есть несколько каталогов, которые заканчиваются на «djvus» (например, «pie_djvus» и «flag_djvus»):

find ./*djvus/ -maxdepth 1 -iname '*.pdf' -exec pdf3djvu -o '{}'.djvu '{}' \;

Использование / после глобуса гарантирует, что glob будет соответствовать только каталоги и указание maxdepth из 1 гарантирует, что поиск не будет находиться на глубине более одного уровня в указанных каталогах (что является верхним уровнем)

. В обоих случаях вы будете в конечном итоге с такими вещами, как «file.pdf.djvu», которые могут или не могут вас раздражать. Таким образом, при использовании поиска потребуется второй шаг последующей обработки. Вот один из способов сделать это, если вы используете недавнюю bash как свою оболочку (некоторые оболочки будут разбивать имена файлов на пробелы, что нарушит это, но текущий bash этого не делает).

for F in *.pdf.djvu; do mv -v "$F" "${F%.pdf.djvu}.djvu"; done
1
задан 8 September 2014 в 23:27

0 ответов

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

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