[linux] vreemde filenamen verwijderen
Daniel C. von Asmuth
asmuth op bakunin.xs4all.nl
Ma Aug 29 09:45:28 CEST 2016
Aldus schreef paai op Sun, Aug 28, 2016 at 08:24:08PM +0200:
> Ik heb hier een stel files die ik niet kan verwijderen. Rare letters.
> Maar de bekende trucs als 'rm --*', backslashes of dubbele quotes werken
> niet...
>
>
> rm: cannot remove 'A Mej?a, Pedro de la Rosa - Misa Comunitaria (Senor
> ten Piedad) (Kyrie).xml': No such file or directory
> rm: cannot remove 'Antonio Est?vez - Despertar.xml': No such file or
> directory
> rm: cannot remove 'Crist?bal de Morales - Parce_mihi_Domine.xml': No
> such file or directory
Hiervoor moeten we precies weten hoe die files heten en welke commando's
u hebt ingetypt. De 'locale' setting is ook van belang (oude Unixes
gebruiken de C locale). De bekende probleen zijn dat de '?' en '*' niet
werken tussen enkele quotes en spaties moeten worden voorafgegaan door
een backslash of de hele naam moet tussen aanhalingstekens.
Als je een UTF8 locale gebruikt:
cp Señor\ ten\ Piedad\ \(Misa\ Comunitaria\)\ -\ A.\ Mejía testje
(werkt)
rm "Señor ten Piedad (Misa Comunitaria) - A. Mejía"
(werkt ook)
rm "Se?or ten Piedad (Misa Comunitaria) - A. Mej?a"
rm: cannot remove ‘Se?or ten Piedad (Misa Comunitaria) - A. Mej?a’: No
such file or directory
rm "Se*or ten Piedad (Misa Comunitaria) - A. Mej*a"
rm: cannot remove ‘Se*or ten Piedad (Misa Comunitaria) - A. Mej*a’: No
such file or directory
rm Se*
(werkt ook)
Tenslotte lijkt dit de juiste oplossing:
rm $'Se\xC3\xB1or ten Piedad (Misa Comunitaria) - A. Mej\xC3\xADa'
rm: remove regular file ‘Señor ten Piedad (Misa Comunitaria) - A. Mejía’? y
Een vreemd feature van Bash: je moet de string tussen enkele quotes
zetten met een Dollarteken ervoor en dan werken de hexadecimale
character escapes.
Buenos días,
Daniel
More information about the Linux
mailing list