Я не знаю как, но я создал файл с пустым именем файла, я сомневаюсь, что там были пробелы (я объясню почему в конце):
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 $
Я спросил на #linux, как удалить файл, и один человек предложил мне убрать все остальные файлы, а затем использовать завершение вкладки, что дало очень интересное поведение:
# 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 $
Если бы в имени файла был пробел, он был бы заменен на \ "", когда я нажал клавишу Tab, но это не так.
file *
?Ответы:
Невозможно иметь файл с пустым именем. У вас есть файл, имя которого полностью состоит из пустых или непечатаемых символов.
Чтобы точно узнать, как называется файл, запустите
LC_CTYPE=C ls -b
. Это заменяет все пустые или непечатаемые символы восьмеричными. Например, файл, имя которого представляет собой один пробел нулевой ширины, будет указан как\342\200\213
.Вы можете изолировать этот файл глобусом, который исключает файлы с хорошим именем. Например, вы можете попробовать перечислить файлы, имя которых не начинается с буквы.
Не забудьте эту опцию
-d
, чтобы в ней былls
указан сам каталог, а не его содержимое.Вы должны переименовать файл, чтобы иметь разумное имя. Вы можете положиться на завершение своей оболочки или использовать глобус, который соответствует только этому файлу.
источник
Это может быть каталог с только пробелами или непечатными символами в имени. Кроме того, похоже, что в нем есть только одна запись, кроме «.» и «..», поэтому вы видите «3» во втором столбце вывода вашей первой команды. Вы всегда можете использовать ,
stat
чтобы распечатать имя каталога, с:stat -f "'%N'" *
. Если это непечатно, вам, возможно, придется передать егоcat -v
илиod -c
посмотреть, что это на самом деле.Чтобы удалить его, вам, вероятно, придется запустить
rmdir -- 'dirname'
(замените 'dirname' на имя каталога. Возможно, вам придется использовать globs, если в нем есть непечатаемые имена), хотя, как я уже говорил, в нем есть содержимое, поэтому вы Придется зайти в этот каталогcd -- 'dirname'
и изучить его содержимое.Я бы посоветовал вам избегать использования
rm -rf
любой ценой, поскольку проблему с именами каталогов легко исправить.источник