我在某个目录中遇到了这种情况:
$ ls -al
...
drwxr-xr-x 2 me users 8192 Juni 28 15:27 tmp
-rw-r--r-- 1 me users 439 Jan. 3 2013
...
我如何访问似乎没有文件名的第二个条目?
答案1
示例运行创建一个名为“non breaking space”的文件并重命名它:
$ ls -1 # Each file on a separate row
testfile
$ touch # I'm actually writing the character u00a0 here
$ ls -1
testfile
$ ls -i # Print inodes
2031842 testfile
2023653
$ find . -maxdepth 1 -inum 2023653 -exec mv {} hithere \;
$ ls -i1
2023653 hithere
2031842 testfile
其exec
形式只有在只有一个匹配项时才有意义,但除非存在指向同一文件的硬链接,否则 inode 编号在该分区上应该是唯一的。您可以先运行不带参数的 find 来测试这一点,看看是否得到多个匹配项。如果是这种情况,您可以例如优化模式find
以仅匹配您想要的文件。
由于重命名不依赖于文件名的确切字符,因此输入奇怪的代码点应该没有问题。
答案2
我会尝试“ls -1a > /tmp/list”和 hexdump 看看是否有结果。文件名可能是空格和制表符的序列。如果 hexdump 显示文件名为空格(比如 1 个空格),则执行“mv \ somename”
ls -1 ls -1 > /tmp/列表 猫/ tmp /列表 十六进制转储/tmp/列表 00 01 02 03 04 05 06 07 - 08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF 00000000 20 0A {------ . mv \ 新 {------ ls -1 新的