如何删除文件名包含非打印字符的文件

如何删除文件名包含非打印字符的文件

我以某种方式设法创建了一个似乎没有文件名的文件。我在下面找到了一些有关如何获取文件的更多详细信息的信息线。

但是,我尝试了列出的一些建议,但似乎无法删除该文件。我不确定我做了什么来创建它,但它是在尝试复制 xml 文件时发生的。

该文件的一些信息如下;

> ls -lb
total 296
-rw-r--r--   1 voyager  endeavor  137627 Jan 12 12:49 \177

> file *
:               XML document

> ls -i
 417777   

我尝试找到使用 inum 开关,然后将其通过管道传输到 rm ,因为这似乎是摆脱它的最简单的方法。但是,下面链接的线程底部给出的示例对我来说失败了。例子是:

> find -inum 41777 -exec ls -al {} \;
find: illegal option -- i
find: [-H | -L] path-list predicate-list

所以我首先尝试使用路径列表,如下所示,但这也不起作用:

> find . -inum 41777 -exec ls -al {} \;

我不确定不可打印的字符 \177 是什么,或者如何将其传递给命令rm,但我真的想确保在尝试删除此文件时不会弄乱任何其他文件/目录。

答案1

该文件有一个名称,但它由不可打印的字符组成。如果您使用 ksh93、bash、zsh、mksh 或 FreeBSD sh,您可以尝试通过指定其不可打印的名称来删除它。首先确保名称正确:ls -ld $'\177' 如果显示正确的文件,则使用 rm:rm $'\177'

另一种(风险更大)的方法是使用rm -i -- *.使用 -i 选项 rm 需要在删除文件之前进行确认,因此您可以跳过除该文件之外的所有要保留的文件。

祝你好运!

答案2

对于那些使用vim在当前工作目录中运行它的人:

$ vim ./ 

并使用箭头键或导航到该文件j/k。然后点击Shift+D并确认删除y

答案3

可能有一种方法可以将文件名传递给rm,但如果您担心弄乱任何东西,您可以使用 GUI 文件管理器。 Emacs 附带一个目录编辑模式,如果您安装了它,就可以使用它:

  1. 打开文件夹中的emacs.您可以运行emacs /path/to/folder,或者打开 emacs,点击Esc+ x,然后运行dired​​,这将提示输入路径

    http://so.mrozekma.com/unix-dired-delete1.png

  2. 移动到要删除的文件所在的行,然后按d。您应该D在文件旁边的左边看到一个:

    http://so.mrozekma.com/unix-dired-delete2.png

  3. x保存您的更改。它会提示您确定要删除该文件;按y

    http://so.mrozekma.com/unix-dired-delete3.png

答案4

您已经演示了file *shell glob ( *) 能够获取此文件,因此现在只需rm对该 glob 执行操作即可。

  • 更改到文件所在的目录。
  • 跑步rm -i *
  • 输入n除文件名看似不可见的文件之外的所有文件

相关内容