Я пытаюсь переименовать кучу файлов, содержащих пробелы, избавляясь от пробелов. Я думал, что нашел правильную команду bash:
for f in *.txt; do mv \"$f\" ${f/ /}; done
Однако это дает ошибку «mv: target не является каталогом» для каждого файла. Если я заменю «mv» на «echo mv» в команде, он напечатает правильную команду mv для каждого файла, и если я наберу любую из этих команд mv по отдельности, они будут работать. Например, если у меня есть 2 файла, «a.txt» и «b.txt», и я запускаю приведенную выше команду, я получаю:
mv: target 'a.txt' is not a directory
mv: target 'b.txt' is not a directory
Если я наберу команду:
for f in *.txt; do echo mv \"$f\" ${f/ /}; done
Я получил:
mv "a .txt" a.txt
mv "b .txt" b.txt
Я нашел другой способ сделать это, используя «переименовать», но я хотел бы знать, почему это не работает.