Вероятно, вы ищете параметр 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
как неудавшийся.
После 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
-.