Я должен выполнить следующие действия на несколько файлов в одной папке:Удалить общий префикс из многих файлов сразу
Remove "Sword of the Stranger - " part from the file names like "Sword of the Stranger - Aganai No Yuki - ストレンヂア無皇刃譚 - [20-25].mp3".
Чтобы сделать это я построил следующую команду:
find . -name '*.mp3' -exec sh -c "cp {} `echo {} | cut -f2- -d'-' | cut -c2-`" \;
Но при выполнении вышеуказанной команды я получаю следующую ошибку:
cp: target ‘}’ is not a directory
Даже если я изменю приведенную выше команду для учета пробелов в именах файлов, он все равно дает мне ту же ошибку.
find . -name '*.mp3' -exec sh -c "cp {} "`echo {} | cut -f2- -d'-' | cut -c2-`"" \;
Пожалуйста, кто-нибудь объяснить, почему я получаю сообщение об ошибке и предложить еще одну прокладку, чтобы сделать вышеописанную операцию (предпочтительно с использованием находку и Exec и ф).
Я использовал команду с одинарными кавычками, как вы упомянули. Также я помещаю '' part inside '"для учета пробелов в имени файла, и теперь я получаю новую ошибку:' cp: target' Sora No Hate Made - ス ト レ ン ヂ ア 無 皇 刃 譚 - [25-25] .mp3 'is not каталог – tom
@tom: Обновлен для адресации пробелов в ваших файлах. (Вам нужно больше, чем только один набор '' ''.) – ruakh
Да, я работал на этот раз, но вы можете объяснить мне, почему эта ошибка «не была»? – tom