Исправление зависимостей

Завершение вкладки Bash должно работать правильно, если вы просто наберете mv 90843_O и нажмете вкладку. В противном случае существует один способ правильно избежать имени:

mv "90843_O\\\\'ConnorPaul_GeneralManager.jpg" dest.jpg

Двойные кавычки устраняют необходимость экранировать ', но два символа обратной косой черты все равно необходимо экранировать (одна дополнительная обратная косая черта для каждого из них дает четыре обратных косой черты. ). Другой вариант:

mv '90843_O\\'\'ConnorPaul_GeneralManager.jpg dest.jpg

Здесь установка обратной косой черты в одинарные кавычки устраняет необходимость их экранирования, но вам нужно закончить одинарные кавычки, чтобы добавить литерал '. Это экранируется после окончания кавычек.

Обратите внимание, что проблема здесь как в использовании обратной косой черты в имени, так и в одинарной кавычке. Чтобы заменить последовательность \\ ' (поскольку в имени файла в вопросе есть две обратные косые черты, оба вызовут проблемы) на подчеркивание для всех файлов в каталоге с помощью цикла:

for file in *"\\\\'"*; do
  mv -i "$file" "${file//"\\\\'"/_}"
done

-i заставит mv запросить, если какие-либо файлы будут перезаписаны. Использование prename ( переименовать ссылки на это во многих системах):

prename -n 's:\\\\'\'':_:g' *"\\\\'"*

Удалите -n , когда вы счастливы, что он делает то, что вы хотите. Обратите внимание, что символы обратной косой черты должны быть экранированы внутри выражения perl, даже если они заключены в одинарные кавычки (без одинарных кавычек вам понадобится восемь обратных косых черт, поскольку четыре будут удалены оболочкой и не будут частью выражения perl).

0
21.08.2018, 00:46
0 ответов

Теги

Похожие вопросы