Я переименовываю текстовый файл из Programmer.txt
в Programmer's File.txt
, используя переименовать команду в терминале. Я попробовал следующую команду:
rename 's/Programmer/Programmer's\ File' *.txt
Но она не работает. Я предполагаю, что проблема в одинарной кавычке в слове Programmer's
. Как я могу это исправить?
Добавьте \
перед апострофом, чтобы избежать цитаты:
mv Programmer\'s File.txt Whatever.txt
Вам нужен escape-символ:
sudo mv Programmer.txt "Programmer \ 's File.txt"
Escape-символы сохраняют следующий символ, чтобы Bash или любая другая программа не интерпретировала его каким-либо иным образом, кроме литерала.
Поскольку одинарные кавычки не являются особенными, когда они находятся внутри двойных кавычек, самый простой способ -
rename -n "s/Programmer/Programmer's File/" *.txt
(обратите внимание, что символ пробела не нужно экранировать, так как кавычки уже защищают его от расширения оболочкой).
В качестве альтернативы, закройте кавычку, передайте экранированную кавычку \ '
оболочке, затем снова откройте кавычки:
rename -n 's/Programmer/Programmer'\''s File/' *.txt
или вы можете вообще отказаться от цитирования и просто экранировать специальные символы оболочки напрямую:
rename -n s/Programmer/Programmer\'s\ File/ *.txt