【问题标题】:How to remove this file with special characters如何删除带有特殊字符的文件
【发布时间】:2018-05-31 01:55:42
【问题描述】:

我要删除的文件在文件名中包含特殊字符。这是文件在 vim 编辑器中的外观(如果我通过 vi 打开目录)-

<200c>minaldi.pdf

我尝试了所有可能的方法来删除文件,例如使用“inum”查找,使用转义序列,但似乎没有任何帮助。

我试过了-

find . -type f -inum 37700 -exec rm '{}' \;
rm: cannot remove `./‌minaldi.pdf': No such file or directory 

这里 37700 是文件的编号。

这是使用 ls | 的文件名cat -v 命令 -

M-bM-^@M-^Lminaldi.pdf

并使用 ls | od -bc 命令 -

0000000 342 200 214 155 151 156 141 154 144 151 056 160 144 146 012
        342 200 214   m   i   n   a   l   d   i   .   p   d   f  \n
0000017

【问题讨论】:

  • 你试过rm -f *minaldi.pdf吗?
  • 安德鲁,试过rm -f *minaldi.pdf。不删除文件。
  • @jm666,试过 perl cmd - &gt; perl -E 'unlink("\N{ZERO WIDTH NON-JOINER}minaldi.pdf")' Constant(\N{ZERO WIDTH NON-JOINER}minaldi.pdf): $^H{charnames} is not defined at -e line 1, within string Execution of -e aborted due to compilation errors.
  • @jm666 perl, v5.10.1 (*) 为 x86_64-linux-thread-multi 构建
  • 尝试删除整个目录! (在移走您要保留的文件之后...)

标签: bash rm


【解决方案1】:

可以使用find的内部delete参数:

find . -type f -inum 37700 -delete

【讨论】:

  • &gt; find . -type f -inum 37700 -delete find: cannot delete ``./‌minaldi.pdf': No such file or directory
【解决方案2】:

使用echo 转义:

rm "$(echo -en './‌\xE2\x80\x8Cminaldi.pdf')"

【讨论】:

  • 我收到此错误 - rm: cannot remove ``./‌\\xE2\\x80\\x8Cminaldi.pdf': No such file or directory
【解决方案3】:

如果它只是一次性删除而不是在脚本中使用,请使用-i 进行交互。尽可能多地指定文件名,这样就不必遍历太多文件名:

rm -i *minaldi.pdf

这将询问每个匹配模式的文件是否要删除它。

【讨论】:

  • 已经试过了 :( &gt; rm -i *minaldi.pdf rm: remove regular file ``‌minaldi.pdf'? y rm: cannot remove ``minaldi.pdf': No such file or directory
猜你喜欢
  • 2014-05-27
  • 2015-04-11
  • 1970-01-01
  • 2023-01-19
  • 1970-01-01
  • 2018-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多