Переименовать скрипт bash - false ошибка «нет такого файла или каталога»

Переименовать скрипт bash - false ошибка «нет такого файла или каталога»

Я пытаюсь переименовать несколько сотен файлов на основе другого файла в том же каталоге. Я нашел скрипт и с модификацией у меня есть следующее:

while read file; do echo mv "\"${file%/*}/Trailer.mov\"" "\"${file%.*}-Trailer.mov\""; done < <(find . -type f ! -name "Trailer.mov" -name "*.mkv")

Он выводит команды mv следующим образом:

mv "./dir1/Trailer.mov" "./dir1/filename-Trailer.mov"

Команды mv переименовывают файлы правильно (если они существуют), когда я запускаю их вручную. Когда я запускаю скрипт без echo, он выдает ошибки вроде таких:

mv: cannot stat ‘"./dir1/Trailer.mov"’: No such file or directory

Эта ошибка происходит для каждого элемента независимо от существования файлов. Почему это происходит? Я работаю как root.

решение1

Вам необходимо либо удалить внутренние кавычки, либо использовать eval.

Проблема в том, что "теперь символы s считаются частью имени файла, т.е. происходит попытка доступа к неправильному имени файла (которого не существует).

Связанный контент