如何创建一个空名称的文件?


9

我不知道如何,但是我创建了一个文件名为空的文件,我怀疑那里是否有空格(我将在末尾解释原因):

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键时,它会被\“”代替,但是没有。


5
它是目录,而不是文件,显然它包含三个文件。
Bananguin

2
假设您仍然保留了将空文件以外的所有内容都移走的目录,那么当怎么办file *
Joseph R.

不幸的是,我没有使用mv命令重命名该文件。
ychaouche


2
这个问题不是那个问题的重复。  这个问题是关于处理名称不包含打印字符的意外创建的文件(或目录)的实用技术。  另一个问题是理论上的,假设性的,漫不经心的讨论,讨论了如果您愿意的话可以创建这样一个文件的方式,并且没有涉及处理后果。
G-Man说'Resstate Monica'17

Answers:


14

文件名不能为空。您所拥有的是一个名称完全由空白或不可打印字符组成的文件。

要确切查看文件名是什么,请运行LC_CTYPE=C ls -b。这将用八进制转义符替换所有空白或不可打印的字符。例如,名称为单个零宽度空格的文件将被列为\342\200\213

您可以使用全局名称隔离该文件,该名称不包括具有好名字的文件。例如,您可以尝试列出名称不以字母开头的文件。

chaouche@karabeela /mnt/ubuntu/storage $ ls -d [^A-Za-z]*

不要忘记该选项-d,以便ls列出目录本身而不是目录内容。

您应该重命名文件以使用合理的名称。您可以依靠外壳程序的完成,或使用仅与此文件匹配的glob。

mv [^A-Za-z]* windows-programs

5

该目录可以是名称中仅包含空格或非打印字符的目录。另外,似乎除了“。”以外,它只有一个条目。和“ ..”,这就是为什么您在第一个命令输出的第二列中看到“ 3”的原因。您始终可以使用以下stat命令打印目录名称:stat -f "'%N'" *。如果无法打印,则可能必须将其通过管道传输cat -vod -c查看其实际内容。

要删除它,您可能必须运行rmdir -- 'dirname'(用目录名替换“ dirname”。如果其中包含不可打印的名称,则可能需要使用globs),尽管正如我之前所说,它似乎包含内容,所以您将不得不进入该目录cd -- 'dirname'并检查其内容。

我建议您rm -rf不惜一切代价避免使用,因为目录命名问题很容易弄乱。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.