Supprimer un fichier avec des points d'interrogation dans le nom (un autre encodage) dans Debian

J'ai un fichier avec le nom de ?????????????????????? ???????????????????????? ??????????.png ?????????????????????? ???????????????????????? ??????????.png ?????????????????????? ???????????????????????? ??????????.png dans mon annuaire. Il me semble que le fichier a été créé sous Windows avec un nom russe. Je l'ai tiré avec git et maintenant je ne peux pas compiler mon programme. Et je ne peux pas le supprimer dans Debian.

 rm: cannot remove `??????????????????????': No such file or directory rm: cannot remove `????????????????????????': No such file or directory rm: cannot remove `??????????.png': No such file or directory 

J'ai essayé d'utiliser des citations autour du nom de fichier, mais cela ne fonctionne pas.

Comment supprimer des fichiers avec des noms comme celui-ci?

Utilisez simplement rm -i <wildcard>

 (py26_dfl)[mpenning@Bucksnort ~]$ rm -i *ng rm: remove regular file `IMAG0004-1.png'? n rm: remove regular file `??????????.png'? y (py26_dfl)[mpenning@Bucksnort ~]$ 

L'utilisation de caractères génériques, comme suggéré dans une autre réponse , est souvent le moyen le plus rapide de sélectionner un sous-ensemble de fichiers de votre répertoire, mais pas toujours il est possible de l'utiliser (par exemple, dans le cas précédent, vous avez au moins le suffixe d'extension compréhensible Caractères ).

 rm -i *ng # means remove all files that finish for ng 

Une autre façon peut être d'utiliser le numéro d' inode du fichier.
Avec un ls -i vous aurez la liste des fichiers dans le répertoire actuel avec le numéro d'inode suivi du nom du fichier. Il suit un exemple, obtenu avec ls -i1 juste pour avoir la sortie avec un fichier pour chaque ligne:

 14549004 Various_Command_.sh 14549512 Convert_Scan_Png_To_Jpg.sh 14579439 FILE_TO_DELETE 

Après que vous puissiez supprimer ou déplacer ou exécuter toute commande que vous souhaitez, sélectionnez le fichier par son numéro d'inode . Par exemple: pour remove le fichier FILE_TO_DELETE avec le numéro d' entrée 14579439, il est possible d'écrire:

 find . -inum 14579439 -exec rm -i {} \; 

Remarque: l'option -i après la commande de suppression existe pour forcer le système à prévoir avant chaque suppression.
Pour l'utilisation de find, vous pouvez lire la page man ou rechercher sur Internet un tutoriel .