如何删除名称奇怪的文件?

A. *_* K. 44 linux posix

我写了一个使用 POSIX 内存映射函数的程序 ( mmap)

该程序获取一个文件 ( a.dat) 并对其进行内存映射以进行读/写。

由于程序中的错误,每次我运行程序时都会创建一个带有一些奇怪名称(例如,?d?P?^z??d?P?^z?)的文件。错误已解决,但我无法删除文件。

我无法使用命令行或从窗口管理器中选择/删除来删除它。

那我应该怎么删除呢?我正在使用 Ubuntu 11.04。

Jim*_*imR 59

rm -i -- *将提示您删除每个文件。如果有很多文件,您可以并且应该将 '*' 更改为更窄的匹配。在--停止处理选项,所以命名的文件-d将被删除rm成功。

我过去曾使用过它,它会一直工作,直到您遇到一个或两个它不喜欢的特殊字符为止。

  • @SCO 如果它对您不起作用并且取决于您的 `rm` 版本,您可以执行 `rm -i -- *` `--` 告诉某些版本的 rm 之后没有更多的命令行开关`-` 并将进一步的 args 视为文件名。 (4认同)

Fel*_*rez 21

您可以使用ls -li它们的 inode 来显示所有文件。然后运行此命令以删除文件:

find . -inum ${INODE_NUM} -delete
Run Code Online (Sandbox Code Playgroud)

-maxdepth 1为了安全起见,我添加了我的发现:

find . -maxdepth 1 -inum ${INODE_NUM} -delete
Run Code Online (Sandbox Code Playgroud)

  • 您的答案的第一行说,“您可以使用 `ls -li` 来显示所有文件的 inode。” 我指出`ls -i` 足以获取文件名列表及其相应的inode 编号。(当然,如果你想包含点文件,你需要 `ls -ia`。) (4认同)