jeudi 26 avril 2007

Suppression d'un fichier avec des caractères spéciaux

Comment supprimer un fichier en ligne de commande qui contient des caractères spéciaux ?

Ci dessous plusieurs solutions, une interactive puis une autre avec les inodes.

Exemple:

$ ll ftp*
-rw-r--r-- 1 root sys 0 Apr 26 10:13 ftp.txt
-rw-r--r-- 1 root sys 0 Apr 26 10:13 ftp??

$ rm ftp^A^?\?
rm: cannot lstat `ftp\001\177?': No such file or directory
[Exit 1 ]


-1- Suppression Interactive

Avec un rm -i * on force la demande de suppression:

$ rm -i ftp*
rm: remove regular empty file `ftp.txt'? n
rm: remove regular empty file `ftp\177?'? y


-2- Avec le listing des inodes

$ ll -i ftp*
206 -rw-r--r-- 1 root sys 0 Apr 26 10:13 ftp.txt
205 -rw-r--r-- 1 root sys 0 Apr 26 10:13 ftp??

$ find . -xdev -type f -inum 205 -ls
205 0 -rw-r--r-- 1 root sys 0 Apr 26 10:13 ./ftp\177?

On force la suppression du fichier qui a l'inode numéro 205

$ find . -xdev -type f -inum 205 -exec rm -f {} \;

Aucun commentaire: