如何删除文件名损坏的文件?

黑客

程序以某种方式创建了一个文件名损坏的文件,该文件名无法删除。任何试图删除文件的尝试都会导致“没有这样的文件或目录”,就像文件不存在一样。

问题似乎是文件名中的控制字符ASCII 2。

$ ls
??[????ة?X

$ ls | xxd
00000000: 3f3f 5b3f 3f02 3f3f d8a9 3f58 0a         ??[??.??..?X.

# Typing '?' and letting the bash complete the filename
$ rm \?\?\[\?\?^B\?\?ة\?X 
rm: das Entfernen von '??[??'$'\002''??ة?X' ist nicht möglich: Datei oder Verzeichnis nicht gefunden

$ rm *
rm: das Entfernen von '??[??'$'\002''??ة?X' ist nicht möglich: Datei oder Verzeichnis nicht gefunden

$ ls -i
2532 ??[?????ة?X
$ find -inum 2532 -delete
find: ‘./??[??\002??ة?X’ kann nicht gelöscht werden.: Datei oder Verzeichnis nicht gefunden

fsck重新启动后我尝试运行,但是文件仍然存在。

$ zcat /var/log/upstart/mountall.log.1.gz
...
fsck von util-linux 2.25.1
/dev/sdc3: sauber, 544937/6815744 Dateien, 21618552/27242752 Blöcke
...

没有迹象表明存在问题。(“索伯” =干净)

我什至尝试编写自己的删除程序以及rm命令失败

$ cat fix.c
#include <stdio.h>
#include <errno.h>

int main() {
    char filename[20];
    sprintf(filename, "%c%c%c%c%c%c%c%c%c%c%c%c", 0x3f,0x3f,0x5b,0x3f,0x3f,0x02,0x3f,0x3f,0xd8,0xa9,0x3f,0x58);
    printf("filename = %s\n", filename);

    int result = remove(filename);
    printf("result = %d\n", result);
    printf("errno = %d\n", errno);
    perror("Error");
    return 0;
}

$ gcc -o fix fix.c && ./fix
filename = ??[????ة?X
result = -1
errno = 2
Error: No such file or directory

我发现了类似的问题,这些答案对我不起作用:

其他信息:

$ mount | grep " / "
/dev/sdc3 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)

$ uname -a
Linux hera 4.13.0-16-generic #19-Ubuntu SMP Wed Oct 11 18:35:14 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/issue
Ubuntu 17.10 \n \l

有没有办法摆脱这个文件?

黑客

始终仔细检查文件所在的分区;-)

原来,错误的文件不是在我的根分区上,而是在cifs安装上。要摆脱文件,解决方案就像在那里

删除目标机器上的文件。rm命令在那里正常工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何删除文件名无效的文件?

来自分类Dev

如何从文件名中删除空格

来自分类Dev

如何从URL删除文件名?

来自分类Dev

如何删除文件名末尾的\n

来自分类Dev

如何删除文件名的结尾?

来自分类Dev

如何修复损坏的shift-JIS文件名?

来自分类Dev

如何删除损坏的文件?

来自分类Dev

如何删除文件-基于文件名中的日期

来自分类Dev

如何按设置为日期的文件名删除文件?

来自分类Dev

如何删除文件名中包含空格的文件?

来自分类Dev

如何删除文件-基于文件名中的日期

来自分类Dev

从MFT删除文件名

来自分类Dev

如何从Python中文件名列表中的文件名中删除扩展名?

来自分类Dev

在文件名后删除文件-vbscript

来自分类Dev

删除文件名后缀最小的文件

来自分类Dev

如何从PHP中的URL中删除文件名

来自分类Dev

如何从数组中删除/隐藏重复/匹配的文件名?

来自分类Dev

如何从wc -l输出中删除文件名?

来自分类Dev

如何使用Powershell从文件名开头删除空格

来自分类Dev

如何从文件名中删除非ASCII字符?

来自分类Dev

如何从文件名中删除撇号?

来自分类Dev

如何删除Bash文件名中的结尾字符?

来自分类Dev

如何使用find命令从文件名中删除(1)

来自分类Dev

如何从wc -l输出中删除文件名?

来自分类Dev

如何根据后缀从bash完成中删除文件名?

来自分类Dev

如何根据文件名中的日期删除旧备份?

来自分类Dev

如何从文件名开头删除点和空格

来自分类Dev

如何从文件名中删除URI编码?

来自分类Dev

如何从文件名中删除某些字符串?