используйте команду «Найти» для копирования и изменения имен

Вероятно, вы ищете параметр Requisite=вместе с параметром After=.

Из справочной страницы

Similar to Requires=. However, if the units listed here are not started already, they will not be started and the transaction will fail immediately.

Requires=не работает в этом случае, потому что bluetooth.serviceбудет запущен при запуске myweb.service. Опция Requisite=не будет пытаться запустить bluetooth.service. Однако он покажет myweb.serviceкак неудавшийся.

0
12.08.2019, 06:27
1 ответ

После cdвхода в родительский каталог ParentDirectoryзапустите:

find ParentDirectory -type f \( -name "1680x1050.png" -o -name "1680x1050.jpg" \) \
  -exec sh -c 'cp "$1" "Something/${1%%/*}_${1##*/}"' sh {} \;

В части -exec, где для каждого найденного pngили jpgвыполняется новый процесс оболочки, путь к изображению {}передается в качестве аргумента $1сценарию оболочки.

В команде cpимя целевого файла объединяется и ${1%%/*}используется для получения имени родительского каталога, удаляя самый длинный шаблон суффикса (все после первого/${1##*/}используется для получения части имени файла, удаляющей самый длинный шаблон префикса (всех символов до последнего/).

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

find ParentDirectory -type f \( -name "1680x1050.png" -o -name "1680x1050.jpg" \) \
  -exec sh -c 'for i; do cp "$i" "Something/${i%%/*}_${i##*/}"; done' sh {} +

и переберите все аргументы имени файла в сценарии с помощью цикла for-.

0
28.01.2020, 03:22

Теги

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