Linux 删除文件名为乱码的文件
本文将会讲述如何通过Linux rm命令来删除文件名包含特殊字符或者乱码文件的方法。
在Linux系统下我们主要用来删除文件的命令是rm或者unlink命令,但是当文件名为乱码或者包含乱码的文件是,我们就无法选择要删除的文件名,这样就会导致无法删除这些文件名为乱码或者包含特殊字符的文件。
当然这种乱码文件名的文件大多数情况都是由于不正常的操作,比如突然中断从服务器文件上传或者下载某些文件的时候,就有可能导致乱码文件名的出现。
Linux下删除以短横杠或者减号“-””开头的文件名的文件
当文件名以减号“-”开头的时候,如果我们使用rm 命令来删除该文件的时候,系统会报错,那么删除这种文件,可以通过rm命令后面接–, 来删除。
执行命令如下:
#rm -- -fio.txt
Linux下删除文件名包含特殊字符的文件
如果文件名包含的是系统里可以打印的特殊字符的文件,这个时候我们可以使用转义字符或者双引号来传给rm命令。
如果要删除当前目录下的名为“!”的文件,那么可以执行下面的命令:
# rm \!
或者
# rm “!“
命令输出日下:
[email protected]:~# ls ! ! [email protected]:~# ls -al ! -rw-r--r-- 1 root root 0 3月 20 22:20 ! [email protected]:~# rm \! [email protected]:~# ls ! ls: 无法访问'!': 没有那个文件或目录 [email protected]:~# rm "!" [email protected]:~#
Linux 中删除文件名为乱码的文件
对于文件名包含乱码的文件,这些乱码字符大多数都是系统里无法打印出来的,所以你也无法选择或者从键盘输入,这个时候我们可以通过文件的inode号,再结合find命令,将文件删除。
首先我们通过执行ll -i 命令来获取当前目录下的文件的inode号,比如inode号为131104,然后执行下面的find命令,将该inode所对应的文件删除。执行命令如下:
# find ./ -inum 131104 -print -exec rm {} \;
命令输出如下:
[email protected]:~/osetc# ll -i 总用量 32 131103 drwxr-xr-x 2 root root 4096 3月 20 22:28 ./ 131073 drwx------ 7 root root 4096 3月 20 22:22 ../ 131104 -rw-r--r-- 1 root root 0 3月 20 22:28 $%^%$^ 131089 -rw-r--r-- 1 root root 24202 3月 18 23:30 fio1.txt [email protected]:~/osetc# find ./ -inum 131104 -print -exec rm {} \; ./$%^%$^ [email protected]:~/osetc# ll -i 总用量 32 131103 drwxr-xr-x 2 root root 4096 3月 20 22:30 ./ 131073 drwx------ 7 root root 4096 3月 20 22:22 ../ 131089 -rw-r--r-- 1 root root 24202 3月 18 23:30 fio1.txt
或者使用另一个命令,如下:
#find -inum 131104 -delete
命令输出如下:
[email protected]:~/osetc# find -inum 131104 -delete [email protected]:~/osetc# ll -i 总用量 32 13113 drwxr-xr-x 2 root root 4096 3月 20 22:32 ./ 131073 drwx------ 7 root root 4096 3月 20 22:22 ../ 131089 -rw-r--r-- 1 root root 24202 3月 18 23:30 fio1.txt
从上面我们可以看到,inode号为131104的文件被删除了。
99%的人还阅读了: