删除文件名含有特殊字符的文件时的意外发现

首先介绍一下删除文件名含有特殊字符的文件的方法:

Linux 系统下的文件名长度最多可到256个字符。通常情况下,文件名的字符包括:字母、数字、“.”(点)、“_”(下划线)和“-”(连字符)。Linux 允许在文件名中使用除上述符号之外的其它符号, 但并不建议用户这样做。 有些转意字符 (即该字符被系统借用,表示某种特殊含义) 在 Linux 的 命令解释器(shell)中有特殊的含义。这样的转意字符有:“?”(问号),“*”(星号), “ ”(空格), “$”(货币符), “&”, 扩号等等。在文件名中应尽量避免使用这些字符。文件名中可以有“ ”(空格),但建议用户用“_”(下划线)来替代。“/” 既可代表目录树的根也可作为路径名中的分隔符(类似DOS下的“\”),因此“/“不能出现在文件名中。   和 DOS 一样,“.” 和 “..”分别用来表示“当前目录”和“父目录”, 因此它们也不能作为文件名。

1. 文件名含有特殊字符,直接使用 rm 可能删除不了,可以使用如下方法:

1) 使用 ls -i 查处该文件的 inode 号,假设为654321

2) 使用find命令删除

find ./ -inum 654321 -ok rm ‘{}‘ \;

2. 如果文件名是以 - 连字符开头的,可以使用如下方法来删除,如删除 "-filename" 文件:

rm -- -filename

rm ./-filename

我遇到的问题:

aria2下载目录中发现如下异常文件

/opt/share/data# ll

drwxrwxrwx    2 root     root          4096 Mar 23 08:09 aria2/

drwxrwxrwx    2 root     root          4096 Mar 23 14:18 /

-rw-rw-rw-    1 root     root           234 Mar 23 14:41

一个命名为“/”,一个命名为空或者空格

这个不敢通过一般语法和上述方法直接尝试删除,只能首先尝试使用cp进行测试,未果。

当测试到ls -i * 的时候。忽然发现如下内容:

飞鸟娱乐(bbs.wofei.net).超人归来.720P.中英字幕:

66619 -rw-rw-rw-    1 root     root             0 Mar 23 14:18 [email protected]

66627 -rw-rw-rw-    1 root     root             0 Mar 23 14:18

原来这些异常符号是中文出现了乱码造成的。

修改系统环境变量支持中文后问题解决。

时间: 2024-10-06 12:37:34

删除文件名含有特殊字符的文件时的意外发现的相关文章

Linux删除文件名中包含“-”的文件

背景: 练习用shell的一些特殊符号,输出了一个 cat test.txt > -n,结果创建了一个叫做“-n”的文件 问题: 使用rm -f -n删除不了“-n"文件 解决方法:在文件名之前加”--“来删除文件

怎样删除文件名过长的文件

在你想要被删除的文件旁边,新建一个文本文件(txt就行)在里面输入如下内容DEL /F /A /Q \\?\%1RD /S /Q \\?\%1然后点另存为,然后在保存类型框中选择所有文件然后命名为万能删除.bat最后把需要删除的文件往刚建的万能删除这个批处理文件上拖,想要被删的文件自动被删除. (无法删除时将当前文件夹名修改短一点!!)

error C1010:在查找预编译头文件时遇到意外的文件结尾——————vs错误

在MFC工程下添加了一个新的文件,编译时出现错误,错误描述为: 解决方法: 在解决方案管理器中找到相应的.cpp文件,右键属性,C++--预编译头中选择不使用预编译头.保存后Ctrl + F7重新编译即可. 问题分析: .. 原文地址:https://www.cnblogs.com/xiawuhao2013/p/9704161.html

Linux下删除乱码或特殊字符文件

今天遇到一个问题,一个文件名是“-MXV9.log”,直接用rm删除的时候就报错,如下: [localhost]rm -MXV9.log rm: illegal option -- M rm: illegal option -- X rm: illegal option -- V rm: illegal option -- 9 rm: illegal option -- . rm: illegal option -- l rm: illegal option -- o rm: illegal o

FileFilter 遍历某个目录下文件名含有某个字符的文件

由于IIS版本的升级,造成了文件名中含有“+”的特殊字符的文件(多数是图片)在网页中不能被访问,于是必须查找当前目录下含有多少这样的文件,从而制定最佳的解决方案. 废话少说,直接上核心代码: public void GetAllFilesInDirectory(string strDirectory, string searchCh) { DirectoryInfo directory = new DirectoryInfo(strDirectory); DirectoryInfo[] dire

删除文件时提示“找不到该项目”,怎么解决? 转摘自:http://jingyan.baidu.com/article/e4d08ffdf5ab470fd2f60df4.html

故障现象:在使用Windows系统删除文件或者文件夹的时候,有时会出现“找不到该项目”的错误提示,可能再次“重试”也无济于事. 那么,接下来T库小编就为库友们简单概括一下出现该问题的原因. 故障原因: 1 磁盘文件索引出现问题,造成已删除的文件夹还存在,但再次删除却出现该问题. 2 使用下载工具创建的文件夹,在未下载完成前自行删除了该文件. 3 存在守护进程所致. 4 系统中木马,或者被恶意隐藏. 5 文件或文件夹名称不符合Windows命名规范,含有特殊字符等.比如,防删除的Ghost文件夹,

关于Linux下文件删除文件时提示No such file or directory

尊敬的各位老大: 本人了Linux小白一枚,遇到一点问题想请老大们指点一下今天练习tar命令压缩文件时想给给文件名内增加一个当前年月日 [[email protected] log]# tar zcvf log.tar-'date +%F'.gz . 结果把反引号写成单引号用 ls 命令查看发现压缩后的文件名为 log.tardate +%F.gz 意识到自己的错误之后想删除这个文件结果出现 [[email protected] log]# rm ./log.tar-date +%F.gz rm

Linux下通过rm -f删除大量文件时提示"-bash: /bin/rm: Argument list too long"的解决方法

Linux下通过rm -f删除/var/spool/postfix/maildrop/中大量的小文件时提示: "-bash: /bin/rm: Argument list too long" 如图: 通过ls /var/spool/postfix/maildrop/*|wc -l 发现文件数达到21万多,见附件: 原因:rm -f的参数过多 解决方法:可使用awk一次删除一个的方式进行删除,但必须先进入该目录下,操作方法如下:1.先进入该目录下:cd /var/spool/postfi

U盘删除文件时提示“文件或目录损坏且无法读取”的解决方法

U盘删除文件时提示"文件或目录损坏且无法读取"的解决方法 出现原因:在写入或读取文件时,进行复制操作,此时复制到的文件是不完整的!或者移动硬盘/U盘中途被拔出,导致文件损坏 异常现象:被删文件(夹)属性为"只读",更改属性后删除,出现错误提示:提示文件损坏. DOS下使用rd /s命令强制删除失败,进入到该文件夹下使用del /f命令强制删除失败. 使用冰刃.unlocker等强制粉碎文件工具都提示文件损坏 解决方法:CMD下运行命令" chkdsk /f