求救!如何删除这个乱码文件? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ufs
V2EX    Android

求救!如何删除这个乱码文件?

  •  
  •   ufs 2023-03-10 13:08:24 +08:00 13473 次点击
    这是一个创建于 947 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Android 下,在 Termux 里用 unzip 解压一个文件,结果文件名是乱码的:

    $ ls kkk/ ''$'\251\242''+'$'\246''1.DOCX' ''$'\251\242''+'$'\246''2.DOCX' 

    用 TAB 自动补全,文件名显示是这样子的:

    +1.DOCX +2.DOCX 

    没有乱码的正确文件名应该是:/p>

    附件 1.DOCX 附件 2.DOCX 

    然后问题是,这些乱码文件我怎么删也删不掉!

    第 1 种方法:

    $ rm -rf kkk rm: cannot remove 'kkk/': Directory not empty $ cd kkk $ rm * rm: cannot remove ''$'\251\242''+'$'\246''1.DOCX': No such file or directory rm: cannot remove ''$'\251\242''+'$'\246''2.DOCX': No such file or directory 

    第 2 种方法:

    $ ls -i 18251 ''$'\251\242''+'$'\246''1.DOCX' 18376 ''$'\251\242''+'$'\246''2.DOCX' $ find ./ -inum 18251 -delete find: cannot delete ‘./\251\242+\2461.DOCX’: No such file or directory $ find ./ -inum 18251 -exec rm -rf {} \; 

    结果文件依然存在!

    第 3 种方法:

    $ mv \251\242+\2461.DOCX 1.txt mv: cannot move ''$'\251\242''+'$'\246''1.DOCX' to '1.txt': No such file or directory 

    我试过在 adb 下用上面几个命令删,结果依然一样。用 Android 的文件管理器也删不了,也无法重命名。

    我这部手机没有 root 权限,也没有电脑,只有另一部有 root 权限的手机,我把这两部手机相连,在另一部手机自带的文件管理器里同样删不掉这些乱码文件,心想也许 root 权限就能删除,但我下载了几个 root 文件管理器,里面都看不到乱码手机的挂载点,用 Termux 在 /dev/下也找不到乱码手机的设备文件,不知道怎么挂载。难道只能恢复出厂设置了吗??

    求各位大佬帮帮我!!!

    第 1 条附言    2023-03-11 00:27:48 +08:00

    乱码zip文件下载:https://ufs.me/luanma.zip

    其实就是自学考试网的一个附件:https://www.eeagd.edu.cn/selfec/main/ksgg.jsp?ggxh=190

    我发现在一台Android 8手机上用unzip解压该乱码文件后能正常删除。

    $ ls -l /sdcard/Download/kkk/ -rw-rw---- 1 root everybody 657409 Mar 10 22:46 ''$'\251\242''+'$'\246''1.DOCX' -rw-rw---- 1 root everybody 1197974 Mar 10 22:46 ''$'\251\242''+'$'\246''2.DOCX' 

    在Android 13(红米手机),Termux的home目录下用unzip解压后能正常删除,但在/sdcard/Download/下解压就会出现无法删除的情况,而用7zip解压则能正常删除。

    $ ls -l /sdcard/Download/kkk/ -rw-rw---- 1 u0_a888 media_rw 657409 Feb 17 17:31 ''$'\251\242''+'$'\246''1.DOCX' -rw-rw---- 1 u0_a888 media_rw 1197974 Feb 17 17:31 ''$'\251\242''+'$'\246''2.DOCX' 

    7zip解压后除了文件名是■1.DOCX、■2.DOCX外,其它信息与上面相同。如果是权限原因的话,为何7zip解压的能删除呢?

    21 条回复    2023-03-11 14:03:32 +08:00
    yuhangch
        1
    yuhangch  
       2023-03-10 13:13:16 +08:00   1
    手机 terminal 能按 tab 吗?
    AoEiuV020CN
        2
    AoEiuV020CN  
       2023-03-10 13:14:00 +08:00
    巧了,我昨天研究 java 读写乱码文件名问题就生成了一堆乱码文件,
    最后是用 find + rm 删除的,我这命令因为其他文件都是.java 结尾所以这么写,重点只有双引号,
    find -name "*a" -o -exec rm "{}" \;
    ufs
        3
    ufs  
    OP
       2023-03-10 13:14:19 +08:00 via Android
    @yuhangch 可以的
    AoEiuV020CN
        4
    AoEiuV020CN  
       2023-03-10 13:15:10 +08:00
    @yuhangch #1 termux 是自带 tab 按键的, 其他 terminal 如果键盘有 tab 的话也是可能能用的,我以前用百度手机输入法特殊皮肤用过,
    3dwelcome
        6
    3dwelcome  
       2023-03-10 13:22:14 +08:00   1
    握一把手

    /t/841866
    Reficul
        7
    Reficul  
       2023-03-10 13:57:01 +08:00
    find xxxx -delete
    icatme
        8
    icatme  
       2023-03-10 14:14:11 +08:00 via Android
    你换个 shell 试试?
    string2020
        9
    string2020  
       2023-03-10 14:26:35 +08:00
    你发个文件测试包出来 ,我有空试试
    zjsxwc
        10
    zjsxwc  
       2023-03-10 14:37:49 +08:00   1
    #获取文件的 index number
    $ls -lhi
    2808829 -rw-r--r-- 1 zjsxwc zjsxwc 5 Mar 10 14:30 test.txt
    #第一列 2808829 就是 index number

    #通过 index number 获取文件名,然后删掉这个文件
    $rm `find . -inum 2808829`
    icatme
        11
    icatme  
       2023-03-10 14:57:21 +08:00
    @zjsxwc 你看一眼他的第二种方法
    string2020
        12
    string2020  
       2023-03-10 15:00:40 +08:00
    gpt 推荐的是
    adb shell rm -rf "$(printf "%q" "文件名为异常编码的文件")"
    9r85zMBA3IhB4drs
        13
    9r85zMBA3IhB4drs  
       2023-03-10 15:12:35 +08:00
    现在这种问题直接问 ChatGPT 就行了啊
    ----------------
    你好,这是 Bing 。我可以帮你解决这个问题。

    在 Linux 终端删除一个文件名乱码的文件,有以下几种方法:

    - 方法一:使用 find 命令根据文件的 inode 号来删除。每个文件都有一个不变的 inode 号,可以用 ls -li 命令查看。然后用 find -inum inode 号 -delete 命令来删除对应的文件。
    - 方法二:使用通配符来匹配文件名。如果文件名只有部分乱码,可以用 rm *或 rm ?等通配符来删除。注意要加上引号防止误删其他文件。
    - 方法三:使用图形界面来删除。如果系统支持图形界面,可以直接用鼠标右键选择删除或者拖动到回收站。

    希望这些方法对你有帮助。

    源: 与必应的对话,2023/3/10(1) linux 删除乱码文件_不愿透露姓名的菜鸟的博客-CSDN 博客. https://blog.csdn.net/Homewm/article/details/105538851 访问时间 2023/3/10.
    (2) Linux 下删除乱码文件及文件夹方法_linux 怎么删除乱码文件夹_momoring 的博客-CSDN 博客. https://blog.csdn.net/momoringmok/article/details/105013079 访问时间 2023/3/10.
    (3) Linux 删除乱码文件夹_离水的鱼儿的博客-CSDN 博客. https://blog.csdn.net/xuebing1995/article/details/105579479 访问时间 2023/3/10.
    (4) linux 上如何删除文件名乱码的文件_linux 文件乱码_自由 de 单车的博客-CSDN 博客. https://blog.csdn.net/ljfrocky/article/details/78434218 访问时间 2023/3/10.
    (5) Linux 文件名乱码无法删除文件 - 腾讯云开发者社区-腾讯云. https://cloud.tencent.com/developer/article/1952977 访问时间 2023/3/10.
    yolee599
        14
    yolee599  
       2023-03-10 15:24:07 +08:00
    一下回答来自 chatGPT:
    在 Termux 中,乱码文件名通常是由于文件名编码不兼容所导致的。您可以尝试以下方法删除这些文件:
    使用通配符删除:在 Termux 中,您可以使用通配符( wildcard )来删除文件。例如,要删除所有名称为乱码的文件,可以使用以下命令:

    rm -rfv *乱码*

    这将删除所有名称包含“乱码”的文件和目录。

    使用 inode 号删除:在 Termux 中,每个文件和目录都有一个唯一的 inode 号。您可以使用以下命令查看文件的 inode 号:

    ls -i

    然后,使用以下命令删除指定 inode 号的文件:

    find . -inum [inode 号] -exec rm -i {} \;

    注意,这将会询问您是否确认删除文件。

    在其他系统中删除:如果您有其他系统(如 Windows 或 Linux )可以访问这些文件,您可以尝试在其他系统中删除它们。在另一个系统中,文件名可能会被正确地显示,因此您可以使用通常的方式删除这些文件。
    llllljjjjjkk
        15
    llllljjjjjkk  
       2023-03-10 16:30:39 +08:00 via Android
    直接把父目录干掉就可以了
    hxy100
        16
    hxy100  
       2023-03-10 19:21:06 +08:00
    @llllljjjjjkk 你看他的第一种方法就是直接干目录,不是干不掉不是。
    hxy100
        17
    hxy100  
       2023-03-10 19:23:05 +08:00
    我也来蹲一个结果,估计手机上的 Android 环境(类 Busybox ?)和真实的 Linux 环境有区别吧,你用的这些方式在 Linux 系统上工作良好。手机上居然不行?
    vvhy
    18
    vvhy  
       2023-03-10 19:50:57 +08:00
    有意思,是不是文件系统的 bug 啊。试试 MiXplorer ,三 > 添加存储器 > 文档提供程序 > 三 > Termux ,看看能不能删掉
    ufs
        19
    ufs  
    OP
       2023-03-11 00:34:21 +08:00 via Android
    楼上各位大佬的方法都试过了,没用
    xiaowoniukai
        20
    xiaowoniukai  
       2023-03-11 07:03:54 +08:00 via iPhone
    rm -rf
    maokabc
        21
    maokabc  
       2023-03-11 14:03:32 +08:00 via Android   1
    是安卓 fuse 的 bug ,管你用什么(java 层调用,c 层系统调用都没有),最后都需要经过 fuse ,除非 root 后直接进 /data/media/0 下面直接删实际文件。app 自身目录没经过 fuse ,可以删除。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5862 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 96ms UTC 01:52 PVG 09:52 LAX 18:52 JFK 21:52
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86