Як перейменувати файли, що видаляють символ "за допомогою оболонки Linux


1

У мене є декілька файлів з подвійними лапками у назві файлу, як це:

"This_is_a_long_filename_with_quotes" .mp3

Я намагаюся використовувати перейменування команди Linux, я можу легко стерти підкреслення за допомогою

rename 's/_//g' *

але коли я намагаюся з \ "нічого не відбувається (я використовую -n для перегляду змін):

rename -n 's/\"//g' *

нічого не перейменовано

Дякую!


Ви кажете, що ls | grep \"нічого не повертає. Як щодо echo *\"*чи ls *\"*? Якщо жодна з цих команд нічого не показує, у вас немає файлів з подвійними лапками в їх іменах; у вас є файли з парами одиничних лапок у їхніх назвах. Спробуйте ls | grep \', echo *\'*або ls *\'*. Якщо ці команди знаходять ваші файли, перейменуйте їх за допомогою rename -n "s/'//g" *.
G-Man

Правильно вони не є подвійними цитатами! дивіться коментар нижче
Леосар

Вони є "фігурними цитатами". Спробуйте виконати дві renameоперації, вирізаючи та вставляючи точні символи (відкрити та закрити).
beroe

Відповіді:


2

У ваших іменах файлів є "розумні цитати":

“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коли ви вперше спробуєте.


1

Немає необхідності уникати подвійної цитати всередині однієї цитати.

rename -n 's/"//g' *

У будь-якому випадку нічого не перейменовано з втечею або без нього, я не знаю, чому
Леосар

1) На моєму перейменуванні debian є м'яке посилання на інше програмне посилання в / etc / alternative. Перейдіть за посиланнями та використовуйте dpkg -S ...у фінальному файлі, щоб знайти пакунок із забезпеченням виконуваного файлу. 2) Використовуйте dpkg -l package_nameдля пошуку версії пакета -> у моїй системі з rename-0.20-3вищевказаною командою, про яку повідомлялося про переписування, яке ви хотіли. 3) Яку оболонку ви використовуєте? echo $SHELL
AnFi

Проблема полягає в тому, що вони не є подвійними цитатами, як запропонував @WildVelociraptor
Leosar

0

Я зміг зробити це в Bash з цим:

file=$(ls | grep \")
newName=$(echo $file | sed 's/\"//g')
mv $file $newName

Можливо, та ж проблема тут, бо ls | grep \"нічого не повертає
Леосар

Ви впевнені, що вони подвійні цитати? Це може допомогти скопіювати та вставити ім’я файлу в інше місце, щоб побачити, як воно відображається. Можливо, це також проблема з кодуванням імені файлу; ASCII проти Unicode, можливо?
Зімхан

Ой їх немає, це ім'я файлу: “Tokyo_String_Quartet-Beethoven_- Late_String_Quartets - CD1-11-Quartet, _Op._131_in_C_sharp_minor -_Allegro” .mp3
Leosar

1
Вам потрібно вирізати та вставити подвійні лапки, що відкриваються та закриваються, а у своєму перейменуванні використовувати 's / [“”] // g ” . (PS У мене немає проблем зі своїми записами квартету Ліндсей!)
AFH

Я щойно бачив, що @beroe зробив той самий пункт під початковим запитанням, але я дозволю своєму коментарю стояти, оскільки я дав потрібну вам команду редагування.
AFH
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.