如何通过adb shell删除含乱码特殊字符的文件?
解决ADB下乱码文件名无法删除的问题
以下是几种无需重置手机的可行解决方法:
通过inode编号删除
- 在目标目录执行
ls -i,找到乱码文件对应的inode编号(输出结果中的数字列) - 执行删除命令:
若find . -inum [你的inode编号] -deletefind不支持-delete参数,改用:find . -inum [你的inode编号] -exec rm -f {} \;
- 在目标目录执行
用八进制转义字符直接指定文件名
基于ls输出的-\356esk+\256\ stolet+\241\ 2.d+\241l-Den\ po\ Mnichovu.srt,用$''包裹解析八进制转义,执行:rm -f $'-\356esk+\256 stolet+\241 2.d+\241l-Den po Mnichovu.srt'通配符匹配删除
利用文件名的已知特征(比如开头的-、结尾的.srt)匹配删除:rm -f ./-*Mnichovu.srt若目标目录仅存在该乱码文件,可使用更宽泛的匹配:
rm -f ./-*转移正常文件后清理目录
若目录内还有其他正常文件,先转移再删除目录:# 创建临时目录存放正常文件 mkdir /sdcard/temp # 移动正常文件(忽略乱码文件的报错) mv /sdcard/Download/* /sdcard/temp/ 2>/dev/null # 删除原目录 rm -rf /sdcard/Download # 重建目录并移回正常文件 mkdir /sdcard/Download mv /sdcard/temp/* /sdcard/Download/ # 删除临时目录 rm -rf /sdcard/temp
内容的提问来源于stack exchange,提问作者fjb
相关产品推荐
相关产品推荐

