小编The*_*dus的帖子

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

我遇到过一个意外创建的文件,并且文件名非常糟糕。的输出ls -lq

ls -lq
total 2
-rw-r--r--. 1 mbyx7ag2 zk01 0 May  1  2014 ???E@X?p@8?@
Run Code Online (Sandbox Code Playgroud)

我曾无数次尝试杀死这个东西,但到目前为止都无济于事。每当我收到错误,因为该文件不存在,尽管ls在那里显示它并且能够使用stat它:

stat ^A?E\@X?p\@8^H\@ 
  File: `\001\360\265E@X\342p@8\b@'
  Size: 0           Blocks: 3          IO Block: 32768  regular empty file
Device: 1ah/26d Inode: 5239755888  Links: 1
Access: (0644/-rw-r--r--)  Uid: (231058/mbyx7ag2)   Gid: (10027/    zk01)
Access: 2014-05-01 15:47:28.638919596 +0100
Modify: 2014-05-01 15:47:28.638919596 +0100
Change: 2014-05-01 15:47:28.638919596 +0100
Run Code Online (Sandbox Code Playgroud)

有趣的是,那里的 stat 命令是制表符补全的结果,看起来与其他地方使用的名称完全不同。

我尝试过这些问题中的想法:

如何删除没有名称的文件

有没有办法找到只包含非打印字符的文件?

我还尝试了从文件名中删除非打印字符 - 北极地区超级计算中心(在“删除非打印字符”下)的两种方法。

令人担忧的是,使用 inode 的所谓“万无一失”的技巧如下:

ls -i
5239755888 ???E@X?p@8?@
find . …
Run Code Online (Sandbox Code Playgroud)

bash

5
推荐指数
2
解决办法
6882
查看次数

标签 统计

bash ×1