linux下批量删除空文件(大小等于0的文件) 和 乱码文件

find . -name "*" -type f -size 0c | xargs -n 1 rm -f

用这个还可以删除指定大小的文件,只要修改对应的 -size 参数就行,例如:

find . -name "*" -type f -size 1024c | xargs -n 1 rm -f

就是删除1k大小的文件。(但注意不要用 -size 1k,这个得到的是占用空间1k,不是文件大小1k的)。

如果只要删除文件夹或者名字连接等,可以相应的改 -type 参数,具体细节见 man find 。

linux下通过rm命令来删除文件,但是如果要删除文件名乱码的文件,就不能直接使用rm命令了,因为压根就无法输出文件名来。不过借助find命令可以实现对其删除。在linux下对于每个文件都一个对应的不变的inode号,使用 ls -li 可以查看到文件的inode号,同时find可以根据inode号来查找,另外find命令中可以执行其他的命令。删除的步骤如下:

  • 通过ls -li 获取要删除乱码文件名文件的inode号,比如得到的是 123456
  • 执行删除
  • find ./ -inum 123456 -exec rm -rf {} \;
    

    注意:“{}”后要空一格再加上“\;”。

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注