删除名称损坏的文件

删除名称损坏的文件

因此发生了这样的事情:

$ ls
''$'\342\200''abc2.16.5'
$ ls | od -c
0000000 342 200   a   b   c   2   .   1   6   .   5  \n
$ ls -il
76236897 -rw-rw-r-- 1 mob users 0 Aug 16 17:52 ''$'\342\200''abc2.16.5'

我该如何删除此文件?以下是一些无效的操作:

$ rm -i -- *
rm: remove regular file ''$'\342\200''abc2.16.5'? y
rm: cannot remove ''$'\342\200''abc2.16.5': No such file or directory

$ rm ./*
rm: cannot remove './'$'\342\200''abc2.16.5': No such file or directory

$ rm ./<TAB>        # for file name completion
rm: cannot remove './'$'\342\200''abc2.16.5': No such file or directory

$ find . -delete
find: cannot delete './\342\200abc2.16.5': No such file or directory

$ perl -e 'unlink(glob("*")) or die $!'
$ perl -e 'unlink(glob("*2.16.5")) or die $!'
No such file or directory at -e line 1.

$ find . -inum 76236897 -delete
find: cannot delete './\342\200abc2.16.5': No such file or directory

$ rename * xxx ; rm -v xxx
rm: cannot remove 'xxx': No such file or directory

奇怪的是,truncate * --size 0作品,cat *作品,shred *作品

下一步我应该尝试什么?系统是 Red Hat Enterprise Linux Server 版本 6.8

答案1

既然您说shred有效,我建议添加-u要撕碎的论点。

从手册页(man shred)中:

-u 覆盖后释放并删除文件

因此我会shred -n 0 -u *在包含该文件的目录中尝试。

答案2

我遇到过这种情况,偶然间,我尝试在 Vim 中打开父目录。这样我就进入了 netrw,在那里我可以看到有问题的“文件”(在 shell 中看起来像一个损坏的文件名在 netrw 中显示为 3 个条目)。删除每个损坏的文件并退出 Vim 就可以解决问题。

答案3

多年来,这种情况经常发生在我身上。对我来说,它通常发生在 Windows NTFS 分区上;您正在使用 RHEL,但也许相同的过程会对您有所帮助。

我从来无法成功删除损坏的文件或父目录。

我一直必须:

  • 备份所有文件(减去包含损坏文件的目录)
  • 格式化分区
  • 恢复所有文件

如果格式化分区不可行,并且损坏的文件没有造成任何实际问题,您还可以尝试以下操作:

  • 将损坏的文件放在其自己的目录中
    • 将损坏的文件复制到新目录
    • 将其他所有好文件复制到新目录
  • 将损坏文件的目录移动到$TEMP可以安全忽略的位置
  • 将所有其他好文件放回原处

相关内容