![Как переименовать файлы, удалив символ " с помощью оболочки Linux](https://rvso.com/image/1421903/%D0%9A%D0%B0%D0%BA%20%D0%BF%D0%B5%D1%80%D0%B5%D0%B8%D0%BC%D0%B5%D0%BD%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D1%84%D0%B0%D0%B9%D0%BB%D1%8B%2C%20%D1%83%D0%B4%D0%B0%D0%BB%D0%B8%D0%B2%20%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%20%22%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20%D0%BE%D0%B1%D0%BE%D0%BB%D0%BE%D1%87%D0%BA%D0%B8%20Linux.png)
У меня есть несколько файлов с двойными кавычками в имени файла, например:
"Это_длинное_имя_файла_с_цитатами".mp3
Я пытаюсь использовать команду Linux rename, я могу легко стереть подчеркивание с помощью
rename 's/_//g' *
но когда я пробую с \" ничего не происходит (я использую -n, чтобы увидеть изменения):
rename -n 's/\"//g' *
ничего не переименовано
Спасибо!
решение1
В именах файлов есть «умные кавычки»:
“Tokyo_String_Quartet-Beethoven_-Late_String_Quartets-CD1-11-Quartet”.mp3
Попробуйте rename
команду со вставленными вместо"
Или без использования rename
можно сделать sed
вариант:
for f in *.mp3
do
new=$(echo $f | sed -E 's/[“”]//g')
mv $f $new
done
Как и при использовании всех пакетных операций оболочки, mv
безопаснее всего тестировать/запускать на резервной копии исходной папки... Вы можете протестировать, поставив echo
вместо mv
при первой попытке.
решение2
Нет необходимости экранировать двойные кавычки внутри одинарного guote.
rename -n 's/"//g' *
решение3
Мне удалось сделать это в Bash с помощью этого:
file=$(ls | grep \")
newName=$(echo $file | sed 's/\"//g')
mv $file $newName