访问“未命名”文件

访问“未命名”文件

我在某个目录中遇到了这种情况:

$ 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
新的

相关内容