|  |      166450146      2019-01-03 01:07:53 +08:00 xargs rm -- | 
|      3Ewig OP shenjianlin@newdev:~/pdf_file(spider)$ ls |xargs -0 -l1  rm -f xargs: argument line too long | 
|      4ptyfork      2019-01-03 01:38:01 +08:00 find . -type f -depth 1 -delete | 
|  |      5msg7086      2019-01-03 01:48:52 +08:00 第一个问题。 星号展开过长。你可以一次只删一部分文件。比如像 rm 2018* 这样只删除少量文件。 第二个问题。 文件名开始的减号会被识别成参数,需要像一楼说的那样 xargs rm 后面加上 -- 把参数终结掉。 | 
|      6Ewig OP @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 ‘ Wright ’: No such file or directory | 
|      8zealot0630      2019-01-03 01:59:54 +08:00 rm "./文件名" | 
|      9zealot0630      2019-01-03 02:00:15 +08:00 引号不能省略 | 
|      10Ewig OP @zealot0630 具体格式怎么写 | 
|  |      11lcdtyph      2019-01-03 03:06:50 +08:00 via iPhone find . -type f -delete | 
|  |      12leido      2019-01-03 03:08:53 +08:00 via Android ls | xargs -i rm -rf {} 再不行就 find 来删 | 
|  |      13geelaw      2019-01-03 03:25:38 +08:00 一个简单的答案是直接删除 parent directory。 论 shell globbing 的坏处。 | 
|  |      14congeec      2019-01-03 04:01:54 +08:00 标题误导人,不是删除大文件报错,是文件名不符合 Linux 命名惯例导致 rm 没法正确识别文件名 | 
|  |      15yanaraika      2019-01-03 04:11:09 +08:00 不要 ls 再 pipe,find . -type f -max-depth 1 -delete 是正确的 | 
|      16runAll      2019-01-03 08:32:52 +08:00 via iPhone 用 rsync,拿一个空目录和需要删除清空目录同步 rsync --delete-before -a -H -v --progress --stats 空目录 待清空目录 | 
|      17luanluan      2019-01-03 09:32:59 +08:00 @leido  @zealot0630 @zealot0630 @66450146 web 目录下产生 100 多 G 的 core12121 到 core53341 ,有什么办法删除? find /web/ -name 'core*' | xargs rm -rf 安全不? | 
|  |      20yulgang      2019-01-03 09:55:41 +08:00 cd 到目标目录,cd 到目标目录,cd 到目标目录 #rm 列过长处理: find . -name "*" | xargs rm -rf '*' | 
|      21ptyfork      2019-01-03 10:14:43 +08:00 @Ewig  depth 表示遍历的深度,如果当前的目录下有子目录,子目录中还有子目录,那么 -depth 1 表示,只删除第一层的 用 find 了就别再用管道又 xargs 了, 现在的 linux 系统 find 本身就支持 delete 参数,好用又清晰, 除非你在用上古时期的 linux | 
|      22RainySeason      2019-01-03 10:20:06 +08:00  1 好巧,前两天刚看过王垠写的 unix 的缺陷 http://blog.jobbole.com/25792/ | 
|      24Ewig OP 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. | 
|      26hongyexiaoqing      2019-01-03 10:29:23 +08:00 新建一个空的文件夹 kong,然后执行 sudo rsync -r --delete kong/ {目标路径} | 
|      28Ewig OP @yanaraika find . -type f -max-depth 1 -delete  你这里的-max-depth 写“ 1 ” ?那后面为啥跟一个 1 | 
|  |      29yulgang      2019-01-03 10:33:20 +08:00  1 | 
|  |      30yulgang      2019-01-03 10:35:52 +08:00 末尾打错,改成  find . -inum 上面列出的数字 -exec rm -i {} \; 按提示确认删除即可 | 
|  |      31sunnyadamm      2019-01-03 10:37:11 +08:00 @luanluan 在 web 目录执行 find . -name 'core*' -exec  rm {}  \; | 
|      32cyspy      2019-01-03 10:39:45 +08:00 GNU 这套东西的设计是真的有些问题 | 
|      33luanluan      2019-01-03 11:01:25 +08:00 @cyspy  @sunnyadamm @yulgang @yulgang 我在 linux 里 一个目录下有好几种文件, 我想查一个文件的总大小,怎么查啊? du -sh *2018* 直接就列出来了,怎么汇总大小呢 | 
|      34zou2699      2019-01-03 12:50:31 +08:00 via iPhone 使用 tab 补全会自动处理转义文件名的吧,直接就可以删除了吧。 | 
|  |      35des      2019-01-03 13:01:35 +08:00 via Android @RainySeason  照理说,powershell 就是一个好设计了 | 
|  |      36no1xsyzy      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 ...) 文档散乱 | 
|  |      38sunnyadamm      2019-01-03 14:59:18 +08:00  1 嗤嗤嗤,,,不多说了,block 了 | 
|  |      39yulgang      2019-01-03 15:09:07 +08:00 | 
|      40maxio      2019-01-03 16:30:32 +08:00 xargs -n 1 | 
|  |      41zjsxwc      2019-01-03 16:33:10 +08:00 直接删掉当前目录好了 rm -rf . ./* 的话文件一多就删不掉,报参数太长 | 
|      42lieh222      2019-01-03 16:35:34 +08:00 在当前目录执行,for i in `ls`;do rm $i; done,这样可能比较慢,不着急可以这样删,看楼主还能发帖问明显是不着急 | 
|  |      44rootit      2019-01-03 17:52:54 +08:00 因为有特殊字符 使用 rm -f *要删除的文件 用*(正则)替代特殊字符 试试 记得要匹配到一个 小心删除其他的,先 ls *要删除的文件 看下是否匹配正确 然后再删除 | 
|  |      45ofblyt      2019-03-01 10:49:04 +08:00 这个帖子实在太危险了,看了这一贴,实操了几个命令,现在我在搜如何恢复删除文件 |