[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