Je ne sais pas comment, mais j'ai créé un fichier avec un nom de fichier vide, je doute qu'il y ait un espace (je vais expliquer pourquoi à la fin):
chaouche@karabeela /mnt/ubuntu/storage $ ls
total 352K
drwx------ 3 chaouche chaouche 4.0K Feb 12 11:00
drwxr-xr-x 4 chaouche chaouche 4.0K Apr 14 23:13 AUDIO
drwxr-xr-x 5 chaouche chaouche 4.0K Jul 20 22:25 BACKUPS
-rw-r--r-- 1 chaouche chaouche 310K Jun 15 13:00 cv_yassine_chaouche_2012.pdf
drwxr-xr-x 2 chaouche chaouche 4.0K Jun 10 22:16 Mageia-3-i586-DVD
drwxr-xr-x 5 chaouche 1001 4.0K Oct 12 2012 MUSIQUE
drwxr-xr-x 15 chaouche chaouche 4.0K Oct 27 2012 PARISVIII
drwxr-xr-x 6 chaouche chaouche 4.0K Jun 12 18:33 SABAYON
drwxr-xr-x 5 chaouche chaouche 4.0K Jun 15 13:23 SIFTECH
drwxr-xr-x 5 chaouche chaouche 4.0K Feb 6 15:11 TOILES
drwxr-xr-x 4 chaouche chaouche 4.0K Jul 17 17:21 VIDEOS
chaouche@karabeela /mnt/ubuntu/storage $
J'ai demandé sur #linux comment supprimer le fichier et une personne m'a suggéré de déplacer tous les autres fichiers, puis d'utiliser la complétion de l'onglet, ce qui a donné un comportement très intéressant:
# with tab completion
chaouche@karabeela /mnt/ubuntu/storage $ ls /
total 45M
-rwxr-xr-x 1 chaouche chaouche 34M Jan 16 2013 inkscape-0.48.4-1-win32.exe
-rwxr-xr-x 1 chaouche chaouche 8.6M Feb 4 11:42 mypaint-1.0.0-win32-installer.exe
-rwxr-xr-x 1 chaouche chaouche 2.7M Jan 17 2013 pdftkb_setup.exe
# without tab completion, wrote "/" by hand
chaouche@karabeela /mnt/ubuntu/storage $ ls /
total 212K
-rw-r--r-- 1 root root 0 Apr 15 2012 1
drwxr-xr-x 2 root root 4.0K Dec 9 2012 bin
drwxr-xr-x 3 root root 4.0K Jun 15 12:10 boot
-rw------- 1 root root 74K Jul 1 2011 dead.letter
drwxr-xr-x 19 root root 4.2K Jul 20 20:14 dev
drwxr-xr-x 117 root root 12K Jul 20 21:30 etc
drwxr-xr-x 4 root root 4.0K Jun 12 18:40 home
drwxr-xr-x 2 root root 4.0K Jun 8 2011 initrd
drwxr-xr-x 20 root root 12K Dec 9 2012 lib
drwx------ 2 root root 16K Jun 7 2011 lost+found
drwxr-xr-x 4 root root 4.0K Jul 3 01:56 media
drwxr-xr-x 9 root root 4.0K Apr 15 00:06 mnt
drwxr-xr-x 8 root root 4.0K Jun 30 23:19 opt
dr-xr-xr-x 198 root root 0 Jun 15 13:10 proc
drwxr-x--- 28 root root 4.0K Jul 20 21:42 root
drwxr-xr-x 2 root root 12K Dec 9 2012 sbin
drwxr-xr-x 2 root root 4.0K Apr 3 2011 srv
drwxr-xr-x 12 root root 0 Jun 15 13:10 sys
-rw-r--r-- 1 root root 0 Jun 12 18:40 thisismageia
drwxrwxrwt 69 root root 36K Jul 20 22:04 tmp
drwxr-xr-x 14 root root 4.0K Nov 6 2011 usr
drwxr-xr-x 18 root root 4.0K Jul 2 2011 var
chaouche@karabeela /mnt/ubuntu/storage $
S'il y avait un espace dans le nom de fichier, il aurait été remplacé par \ "" lorsque j'ai appuyé sur la touche de tabulation, mais ce n'est pas le cas.
file *
?Réponses:
Il n'est pas possible d'avoir un fichier avec un nom vide. Vous disposez d'un fichier dont le nom est entièrement composé de caractères vierges ou non imprimables.
Pour voir exactement quel est le nom du fichier, exécutez
LC_CTYPE=C ls -b
. Cela remplace tous les caractères vierges ou non imprimables par des échappements octaux. Par exemple, un fichier dont le nom est un seul espace de largeur nulle serait répertorié comme\342\200\213
.Vous pouvez isoler ce fichier avec un glob qui exclut les fichiers avec un joli nom. Par exemple, vous pouvez essayer de répertorier les fichiers dont le nom ne commence pas par une lettre.
N'oubliez pas l'option
-d
, quils
répertorie le répertoire lui-même et non son contenu.Vous devez renommer le fichier pour avoir un nom raisonnable. Vous pouvez vous fier à l'achèvement de votre shell ou utiliser un glob qui ne correspond qu'à ce fichier.
la source
Il peut s'agir d'un répertoire contenant uniquement des espaces ou des caractères non imprimables dans le nom. En outre, il semble qu'il ne comporte qu'une seule entrée, autre que «.» et '..', c'est pourquoi vous voyez le '3' dans la deuxième colonne de la sortie de votre première commande. Vous pouvez toujours utiliser
stat
pour imprimer le nom du répertoire, avec:stat -f "'%N'" *
. S'il n'est pas imprimable, vous devrez peut-être le canalisercat -v
ouod -c
voir ce qu'il est réellement.Pour le supprimer, vous devrez probablement exécuter
rmdir -- 'dirname'
(remplacez 'dirname' par le nom du répertoire. Vous devrez peut-être utiliser des globes s'il contient des noms non imprimables), bien que, comme je l'ai déjà dit, il semble avoir du contenu afin que vous 'devra descendre dans ce répertoire aveccd -- 'dirname'
et examiner son contenu.Je vous suggère d'éviter
rm -rf
à tout prix d' utiliser , car le problème de nommage des répertoires est facile à gâcher.la source