Проблемы с передачей эхосигнала в скрипт xargs для команды mv
И заранее благодарю за любой совет.
Я работаю над сценарием, который автоматически сортирует мои загрузки. Сценарий очень прост, и запуск его вручную дает желаемый эффект. У меня проблема с командой fswatch, которая предназначена для запуска скрипта - я не могу получить вывод из echo, правильно переданный в xargs. Вот команда:
fswatch --event Created Downloads/ | (while read x; do echo $x | xargs -0 bash ./dlsort.sh; done)
и сценарий:
if (echo "$1" | grep -q '\.jpg$'); then
mv "$1" Desktop/images/ &
else
mv "$1" Downloads/other/ &
fi
Я определил, в чем проблема, я просто не знаю, как ее исправить. символ новой строки помещается в конец имени файла, что приводит к сбою команды mv с ошибкой "нет такого файла или каталога" в сценарии. Я экспериментировал с несколькими вариантами команд echo и fswatch, но ничего из того, что я пробовал, не сработало.
Еще раз спасибо всем, кто может помочь с этим
1 ответ
Выяснили хороший ответ на эту конкретную проблему:
Используйте параметр fswatch --format="%p%0". Это гарантирует, что нулевой символ находится в конце имени пути, которое передается в xargs, что и требуется при включенной опции -0.