2018-01-25 Linux 删除文件名乱码的文件
2018-01-25 本文已影响0人
heyzqq
原因
今天,Ubuntu 的串口与虚拟机 Windows 的串口冲突了,我在 minicom 中随意输入(变成一堆乱码),结果在开发板的 Linux 系统中生成了一个文件,文件名类似 [?�?@@?D@8] 这样的。本来就是乱码,想要直接 rm 掉又不行,开发板上又没有桌面,看来没那么简单了。
解决办法
-
ls -l
列出所有文件的详细信息:
root@ ~# ls -l
-rw-r--r-- 1 root root 0 Jan 23 11:56 ?�?@@?D@8
drwxr-xr-x 1 root root 0 Jan 23 16:02 ./
drwxr-xr-x 1 root root 0 Jan 23 16:21 ../
-rwxr-xr-x 1 root root 109880 Jan 23 09:49 test
-
head -n 1
筛选出第一行乱码(如果乱码不在第一行,可以利用grep -v
去掉不想删除的,如:ls -l | grep -v test
可以过滤掉 test 文件;当然还可以利用 head + tail 这两个命令去掉前面和后面的):
root@ ~# ls -l | head -n 1
-rw-r--r-- 1 root root 0 Jan 23 11:56 ?�?@@?D@8
- 利用 awk 筛选出最后的文件名:
root@ ~# ls -l | head -n 1 | awk ‘{printf $NF}’
?�?@@?D@8
- 最后利用 rm 直接删除指定文件名文件:
root@ ~# rm `ls -l | head -n 1 | awk ‘{printf $NF}’`
× 这就OK啦!