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