Как перебрать каталоги и очистить скрипт bash

Полный вопрос о нобе, но я надеялся получить общий совет по моему баху. Как я могу сделать этот сценарий более чистым? Я предполагаю, что один способ – создать что-то, что содержит различные пути и петли над ними. Есть ли что-нибудь еще, что я могу сделать, чтобы сделать это чище, а не просто повторяющимся блоком петель?

#!/bin/bash/ SRCD='/Users/Connor/Documents/GitHub/WhatThePDF/dat/forms/*.pdf' for file in $SRCD do echo ${file} destfile="${file/.pdf/_source.txt}" echo ${destfile} qpdf --qdf --object-streams=disable ${file} ${destfile} done SRCD='/Users/Connor/Documents/GitHub/WhatThePDF/dat/data/*.pdf' for file in $SRCD do echo ${file} destfile="${file/.pdf/_source.txt}" echo ${destfile} qpdf --qdf --object-streams=disable ${file} ${destfile} done SRCD='/Users/Connor/Documents/GitHub/WhatThePDF/dat/maps/*.pdf' for file in $SRCD do echo ${file} destfile="${file/.pdf/_source.txt}" echo ${destfile} qpdf --qdf --object-streams=disable ${file} ${destfile} done SRCD='/Users/Connor/Documents/GitHub/WhatThePDF/dat/none/*.pdf' for file in $SRCD do echo ${file} destfile="${file/.pdf/_source.txt}" echo ${destfile} qpdf --qdf --object-streams=disable ${file} ${destfile} done 

One Solution collect form web for “Как перебрать каталоги и очистить скрипт bash”

Мы можем упростить это до одного цикла, просто передав все имена файлов за один проход:

 #!/bin/bash for file in /Users/Connor/Documents/GitHub/WhatThePDF/dat/{forms,data,maps,none}/*.pdf do echo "${file}" destfile="${file/.pdf/_source.txt}" echo "${destfile}" qpdf --qdf --object-streams=disable "${file}" "${destfile}" done 

Для удобства чтения мы могли бы немного разбить это

например, cd в каталог и прервать, если он не выполняется:

 #!/bin/bash cd /Users/Connor/Documents/GitHub/WhatThePDF/dat || exit 255 for file in {forms,data,maps,none}/*.pdf do echo "${file}" destfile="${file/.pdf/_source.txt}" echo "${destfile}" qpdf --qdf --object-streams=disable "${file}" "${destfile}" done 
  • Как использовать переменную плюс glob ($ var *) в bash
  • Поиск элементов в массиве в bash
  • bash: Как я могу обнаружить, если предыдущая команда не удалась, а затем выйти изнутри функции?
  • странные символы в оболочке bash
  • Как переместить файлы в подкаталоги по счету?
  • Как найти файл, в котором определена функция bash?
  • Добавление одного прерывания строки плюс одна строка текста внизу - в одной строке, один сегмент, кодировка
  • использование. в bash
  • Как печатать удобочитаемый формат в формате KB, MB, GB вместо K, M, G?
  • Дисплей Spinner в ожидании завершения какого-либо процесса
  • В то время как порождает подоболочку в bash?
  • Interesting Posts

    NVM не может найти установленную двоичную Node, проблему PATH на Linux Mint 17?

    Программно контролировать передачу-gtk «режим черепахи»

    Использование точки с запятой для отделения фонового задания от следующего?

    SELinux Запись доступа для vsftpd и samba

    Используйте команду find для преобразования файлов разметки в html

    Проблемы с локалью; не может заставить Arch Linux использовать UFT-8

    Как использовать сеанс ssh без форматирования цвета

    Разрешения Debian + Nginx / Unicorn

    "/ Usr / lib / passmgmt: Файл паролей занят. Повторите попытку позже "в Solaris 11

    Включить прокрутку с помощью trackpoint + middleclick на wayland

    Почему демон linux audit периодически перезапускается со следующим журналом?

    Отвечая на вопрос о Terminus, вместо этого получил TeX Gyre Chorus

    unescape pipe в параметрах

    Удаление набора записей, если найденный шаблон

    Как написать сценарий оболочки HUSH, который проверяет результат каждой команды?

    Linux и Unix - лучшая ОС в мире.