Linux 删除大文件的报错 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Ewig
V2EX    Linux

Linux 删除大文件的报错

  •  
  •   Ewig 2019-01-03 01:04:16 +08:00 5432 次点击
    这是一个创建于 2484 天前的主题,其中的信息可能已经有所发展或是发生改变。
    shenjianlin@newdev:~/pdf_file(spider)$ rm ./*
    -bash: /usr/bin/rm: Argument list too long
    shenjianlin@newdev:~/pdf_file(spider)$ ls |xargs rm
    xargs: unmatched single quote; by default quotes are special to xargs unless you use the -0 option
    rm: invalid option -- '1'
    Try 'rm ./-2018 年 5 月 PMI 点评:制造业总体呈' to remove the file ‘-2018 年 5 月 PMI 点评:制造业总体呈’.
    Try 'rm --help' for more information.


    请问如何处理这种
    45 条回复    2019-03-01 10:49:04 +08:00
    66450146
        1
    66450146  
       2019-01-03 01:07:53 +08:00
    xargs rm --
    Ewig
        2
    Ewig  
    OP
       2019-01-03 01:11:03 +08:00
    @66450146 你这个什么意思,我只删除当下的文件,当下的文件夹不能删除
    Ewig
        3
    Ewig  
    OP
       2019-01-03 01:11:48 +08:00
    shenjianlin@newdev:~/pdf_file(spider)$ ls |xargs -0 -l1 rm -f
    xargs: argument line too long
    ptyfork
        4
    ptyfork  
       2019-01-03 01:38:01 +08:00
    find . -type f -depth 1 -delete
    msg7086
        5
    msg7086  
       2019-01-03 01:48:52 +08:00
    第一个问题。
    星号展开过长。你可以一次只删一部分文件。比如像 rm 2018* 这样只删除少量文件。

    第二个问题。
    文件名开始的减号会被识别成参数,需要像一楼说的那样 xargs rm 后面加上 -- 把参数终结掉。
    Ewig
        6
    Ewig  
    OP
       2019-01-03 01:55:13 +08:00
    @msg7086 ls |xargs rm --
    rm: cannot remove ‘ Value ’: No such file or directory
    rm: cannot remove ‘ as ’: No such file or directory
    rm: cannot remove ‘ Revenue ’: No such file or directory
    rm: cannot remove ‘ Declines-17 页.pdf ’: No such file or directory
    rm: cannot remove ‘ A ’: No such file or directory
    rm: cannot remove ‘ Wriht ’: No such file or directory
    msg7086
        7
    msg7086  
       2019-01-03 01:58:53 +08:00
    @Ewig 改用 ls -1 试试。
    zealot0630
        8
    zealot0630  
       2019-01-03 01:59:54 +08:00
    rm "./文件名"
    zealot0630
        9
    zealot0630  
       2019-01-03 02:00:15 +08:00
    引号不能省略
    Ewig
        10
    Ewig  
    OP
       2019-01-03 02:58:31 +08:00
    @zealot0630 具体格式怎么写
    lcdtyph
        11
    lcdtyph  
       2019-01-03 03:06:50 +08:00 via iPhone
    find . -type f -delete
    leido
        12
    leido  
       2019-01-03 03:08:53 +08:00 via Android
    ls | xargs -i rm -rf {}
    再不行就 find 来删
    geelaw
        13
    geelaw  
       2019-01-03 03:25:38 +08:00
    一个简单的答案是直接删除 parent directory。

    论 shell globbing 的坏处。
    congeec
        14
    congeec  
       2019-01-03 04:01:54 +08:00
    标题误导人,不是删除大文件报错,是文件名不符合 Linux 命名惯例导致 rm 没法正确识别文件名
    yanaraika
        15
    yanaraika  
       2019-01-03 04:11:09 +08:00
    不要 ls 再 pipe,find . -type f -max-depth 1 -delete 是正确的
    runAll
        16
    runAll  
       2019-01-03 08:32:52 +08:00 via iPhone
    用 rsync,拿一个空目录和需要删除清空目录同步
    rsync --delete-before -a -H -v --progress --stats 空目录 待清空目录
    luanluan
        17
    luanluan  
       2019-01-03 09:32:59 +08:00
    @leido
    @zealot0630
    @zealot0630
    @66450146

    web 目录下产生 100 多 G 的 core12121 到 core53341 ,有什么办法删除?

    find /web/ -name 'core*' | xargs rm -rf
    安全不?
    Ewig
        18
    Ewig  
    OP
       2019-01-03 09:46:59 +08:00
    @yanaraika 你这里的“ max-depth ”写啥
    Ewig
        19
    Ewig  
    OP
       2019-01-03 09:47:43 +08:00
    @ptyfork 没明白你这里的-depth 的意思
    yulgang
        20
    yulgang  
       2019-01-03 09:55:41 +08:00
    cd 到目标目录,cd 到目标目录,cd 到目标目录

    #rm 列过长处理:
    find . -name "*" | xargs rm -rf '*'
    ptyfork
        21
    ptyfork  
       2019-01-03 10:14:43 +08:00
    @Ewig
    depth 表示遍历的深度,如果当前的目录下有子目录,子目录中还有子目录,那么 -depth 1 表示,只删除第一层的

    用 find 了就别再用管道又 xargs 了, 现在的 linux 系统 find 本身就支持 delete 参数,好用又清晰, 除非你在用上古时期的 linux
    RainySeason
        22
    RainySeason  
       2019-01-03 10:20:06 +08:00   1
    好巧,前两天刚看过王垠写的 unix 的缺陷
    http://blog.jobbole.com/25792/
    Ewig
        23
    Ewig  
    OP
       2019-01-03 10:21:52 +08:00
    @yulgang 这个我用过,有特殊字符
    Ewig
        24
    Ewig  
    OP
       2019-01-03 10:22:03 +08:00
    shenjianlin@newdev:~/pdf_file(spider)$ find . -name "*" | xargs rm -f '*'
    xargs: unmatched single quote; by default quotes are special to xargs unless you use the -0 option
    rm: invalid option -- '5'
    Try 'rm --help' for more information.
    Ewig
        25
    Ewig  
    OP
       2019-01-03 10:23:04 +08:00
    @ptyfork find . -type f 1 -delete 我直接用这个即可?
    hongyexiaoqing
        26
    hongyexiaoqing  
       2019-01-03 10:29:23 +08:00
    新建一个空的文件夹 kong,然后执行 sudo rsync -r --delete kong/ {目标路径}
    ptyfork
        27
    ptyfork  
       2019-01-03 10:31:30 +08:00
    @Ewig

    find . -type f -delete
    Ewig
        28
    Ewig  
    OP
       2019-01-03 10:31:49 +08:00
    @yanaraika find . -type f -max-depth 1 -delete 你这里的-max-depth 写“ 1 ” ?那后面为啥跟一个 1
    yulgang
        29
    yulgang  
       2019-01-03 10:33:20 +08:00   1
    @Ewig

    处理包含特殊字符的文件

    cd 目标目录

    #列出文件 inode
    ls -il

    #根据 inode 删除对应文件
    find . -inum 上面列出的数字 -exec rm -i {} /;
    yulgang
        30
    yulgang  
       2019-01-03 10:35:52 +08:00
    末尾打错,改成

    find . -inum 上面列出的数字 -exec rm -i {} \;

    按提示确认删除即可
    sunnyadamm
        31
    sunnyadamm  
       2019-01-03 10:37:11 +08:00
    @luanluan 在 web 目录执行 find . -name 'core*' -exec rm {} \;
    cyspy
        32
    cyspy  
       2019-01-03 10:39:45 +08:00
    GNU 这套东西的设计是真的有些问题
    luanluan
        33
    luanluan  
       2019-01-03 11:01:25 +08:00
    @cyspy
    @sunnyadamm
    @yulgang
    @yulgang 我在 linux 里 一个目录下有好几种文件, 我想查一个文件的总大小,怎么查啊? du -sh *2018* 直接就列出来了,怎么汇总大小呢
    zou2699
        34
    zou2699  
       2019-01-03 12:50:31 +08:00 via iPhone
    使用 tab 补全会自动处理转义文件名的吧,直接就可以删除了吧。
    des
        35
    des  
       2019-01-03 13:01:35 +08:00 via Android
    @RainySeason
    照理说,powershell 就是一个好设计了
    no1xsyzy
        36
    no1xsyzy  
       2019-01-03 13:41:51 +08:00
    @des 本来应该是这样的,而且还有 Smalltalk 的一些感觉……
    "whatever,it might be,a line,from,csv" -split ","
    还有代码块,可以改变一段代码的变量绑定
    但是 PowerShell 的 REPL 实在是太垃圾了,尤其 print 出来的东西经常没有意义,另外就是隐式强类型……
    对于类型的反射求解机制也并不好( Python: dir, __dict__, hasattr ...)
    文档散乱
    Ewig
        37
    Ewig  
    OP
       2019-01-03 14:16:37 +08:00
    @yulgang 我这有 10 万个,你让我一个个的列举出来,按照上面删?
    sunnyadamm
        38
    sunnyadamm  
       2019-01-03 14:59:18 +08:00   1
    嗤嗤嗤,,,不多说了,block 了
    yulgang
        39
    yulgang  
       2019-01-03 15:09:07 +08:00
    @luanluan

    du -s 你要的类型,然后 将第一列用 awk 求和。然后可以根据需要决定要不要转换成 KB、MB 还是 GB 显示。
    maxio
        40
    maxio  
       2019-01-03 16:30:32 +08:00
    xargs -n 1
    zjsxwc
        41
    zjsxwc  
       2019-01-03 16:33:10 +08:00
    直接删掉当前目录好了

    rm -rf .


    ./* 的话文件一多就删不掉,报参数太长
    lieh222
        42
    lieh222  
       2019-01-03 16:35:34 +08:00
    在当前目录执行,for i in `ls`;do rm $i; done,这样可能比较慢,不着急可以这样删,看楼主还能发帖问明显是不着急
    Ewig
        43
    Ewig/strong>  
    OP
       2019-01-03 17:50:45 +08:00
    @zjsxwc 我的文件夹里面有很多重要软件,只能删除当下文件啦。谢谢
    rootit
        44
    rootit  
       2019-01-03 17:52:54 +08:00
    因为有特殊字符
    使用 rm -f *要删除的文件 用*(正则)替代特殊字符 试试
    记得要匹配到一个 小心删除其他的,先 ls *要删除的文件 看下是否匹配正确 然后再删除
    ofblyt
        45
    ofblyt  
       2019-03-01 10:49:04 +08:00
    这个帖子实在太危险了,看了这一贴,实操了几个命令,现在我在搜如何恢复删除文件
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3550 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 04:25 PVG 12:25 LAX 21:25 JFK 00:25
    Do have faith in what you're doing.
    ubao msn 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