Intereting Posts
Как контролировать создание txt-файла без использования incron? Как слушать радиоприемник? ntp не может открыть файл общих объектов: Permission denied Доступ к портам для публичного IP-адреса из тюрьмы FreeBSD Проверьте конфигурацию SSH, не рискуя потерять удаленный доступ Серийные устройства ttyS ttyM разность Почему эти две команды «cat» приводятся по-разному? Запустите устройство после того, как другое устройство отключится Преобразование строк новой строки в нуль-ограничение при использовании хвоста На каком уровне поддерживается поддержка сенсорного экрана в Linux? Получить список групп файлов по дате Вычитание одной текстовой строки из другой, оставляя уникальные символы, возможно, используя awk Проблемы с размонтированием раздела для установки debian Медленное завершение работы Arch Linux можно заморозить процесс в Linux и перезагрузить или выключить компьютер. Затем продолжайте процесс, который был заморожен?

Как перебрать каталоги и очистить скрипт 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 

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

 #!/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