如何重命名最后两个文件?

如何重命名最后两个文件?

抱歉,如果我没有使用正确的术语来命名这些“退格字符”。

我想清理包含两个文件的目录,这两个文件的名称中似乎包含退格键。如果我列出目录:

ls -la

我明白了:

-rwxrwxrwx    1 guy guy        729 Jun 26 2007  z_regular.mk
-rwxrwxrwx    1 guy guy          1 Sep  7 2016
-rwxrwxrwx    1 guy guy       3220 Sep 27 2

我想我错误地用“退格字符”输入了文件名,所以我们再也看不到这些名称了。

如何重命名最后两个文件?

我不知道怎么称呼他们。是否有一个ls选项允许我以十六进制或其他形式显示文件名,以及如何在命令中使用最新的文件名mv?我使用的是 AIX Unix TLS v6。

编辑:

这些文件分别为 2 和 4 个del字符:

ls -lb

给出

-rwxrwxrwx    1 guy guy          1 Sep  7 2016   \177\177
-rwxrwxrwx    1 guy guy       3220 Sep 27 2      \177\177\177\177\177

但找到了解决方案如何删除没有名称的文件不适用于我在 AIX 中的情况。

到目前为止,我尝试了以下方法但没有成功:

l>ls -l $'\0177\0177'
$\0177\0177 not found
l>ls -l '\0177\0177'
\0177\0177 not found
l>ls -l '\177\177'
\177\177 not found

答案1

语法$'\ooo'(来自 ksh93,现在可以在大多数现代的类似 Bourne 的 shell 上找到,包括zsh, bash, mksh, FreeBSD sh)使用标准echo(与 C 和大多数其他语言一样)与八进制转义的语法相反。因此,\后面最多包含 3 个八进制数字:$'\177'$'\0177'会像$'\017'7。所以:

ls -ld $'\177\177'
mv $'\177\177' better-name

(请注意\177, 又名^?ASCIIDEL中的字符,是不是退格键^H///BS字符\10

答案2

我在建议重复的底部找到了解决方案:

  1. 识别节点号

    ls -lbi
    
    25553  -rwxrwxrwx    1 guy guy          1 Sep  7 2016   \177\177
    25559  -rwxrwxrwx    1 guy guy       3220 Sep 27 2      \177\177\177\177\177
    
  2. 那么从以下位置返回时就可以移动find

    find . -inum 25553  |xargs -I{} mv {} recovered.x
    find . -inum 25559  |xargs -I{} mv {} recovered.y
    

相关内容