2

Я хотел переименовать много файлов с шаблоном, поэтому я попробовал это для цикла:

$ for f in *; do mv \""$f"\" \""HouseMD-S06E${f#*Episode }"\"; done

Но я получил эту ошибку:

mv: cannot stat `"House MD Season 6 Episode 01 - Broken (Parts 1 & 2).avi"': No such file or directory

Так что я сделал эхо-команды mv в файл вроде этого:

$ for f in *; do echo mv \""$f"\" \""HouseMD-S06E${f#*Episode }"\">>mv.txt; done

И запустить файл с source .

Любые идеи, почему первый не работает и как я могу это исправить?

1 ответ1

1

Нет необходимости снова избегать двойных кавычек. Если вы используете двойные кавычки, это обеспечит отсутствие пробелов в именах файлов, даже если переменная $f развернута.

for f in *; do mv "$f" "HouseMD-S06E${f#*Episode}"; done

Если у вас есть эти "двойные двойные кавычки", давайте предположим, что у вас есть файл foo , тогда оболочка попытается выполнить команду:

mv ""foo"" …

И, очевидно, "foo" не существует - только foo - и именно поэтому он терпит неудачу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .