linux下删除或重命名乱码文件和文件夹

2,829次阅读
一条评论

多数人使用的是Windows系统,而在网站制作或其它智能系统中经常使用的是Linux系统,这样在文件迁移过程中难免会遇到中文文件名乱码的问题。通过常用的可视界面系统基本上是不能修正的。

当文件名为乱码的时候,无法通过键盘输入文件名,所以在终端下就不能直接利用rm,mv等命令管理文件了。当文件名为乱码的时候,无法通过键盘输入文件名,所以在终端下就不能直接利用rm,mv等命令管理文件了。
在Linux中,每个文件都有一个节点编号,我们可以利用此来搞定乱码,首先查看乱码文件的节点号

ls  -i
22413314  12 ?..??mp3

一、删除

前面的就是节点号了,接下来使用find命令查询并且删除

find . -inum 32983551 -exec rm {} \;

find  -inum  22413314  -delete

-inum指根据节点号查询;-delete顾名思义就是删除操作了。这样就成功删除乱码文件了,值得注意的是,此方法只适用于删除文件或空的文件夹。

对于文件夹,尤其是非空的文件夹,上面的方法就不适用了,要用到另外的参数来实现,首先相同的是查看乱码文件夹的节点号

ls  -i
18612483 瑗块.?.. - Thank you, Love

接下来使用find命令删除

find  -inum  18612483  -exec  rm  -rf  {} \;
find: . /瑗块.?.. - Thank you, Love : No such  file or directory

虽然提示我们找不到此文件或文件夹,但其实已经表明删除了。-exec作用是查找后执行命令,其中{}代表前面查询到的结果,空格+\;是结束符,其它就不说了。-exec后可以跟任何常用命令,因此这方法不但适用于文件夹,文件也可以。

二、重命名

find . -inum 32983542 -exec mv {} test.txt \;

小技巧

怎么批量删除呢?其实很简单,用for就好了
文件

for n  in  22413315  22413314; do  find  -inum  $n  -delete; done

文件夹

for n  in  22413315  22413314; do  find  -inum  $n  -exec  rm  -rf  { } \ ;; done

$n是变量名,与for后面定义的一致,其它没啥好说的,适用其它操作。

后记

不仅仅是删除,其它基本操作如改名、移动、复制等都适用的。

正文完
 0
withero
版权声明:本站原创文章,由 withero 2017-03-03发表,共计947字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(一条评论)
验证码
阿锑尔 评论达人 LV.1
2021-04-13 13:34:18 回复

如果遇到子文件夹没有权限,find就会终止,有没有处理办法?

 Windows  Chrome  中国江西省赣州市电信