Linux 删除大文件的报错

2019-01-03 01:04:16 +08:00
 Ewig
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.


请问如何处理这种
5033 次点击
所在节点    Linux
45 条回复
66450146
2019-01-03 01:07:53 +08:00
xargs rm --
Ewig
2019-01-03 01:11:03 +08:00
@66450146 你这个什么意思,我只删除当下的文件,当下的文件夹不能删除
Ewig
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
2019-01-03 01:38:01 +08:00
find . -type f -depth 1 -delete
msg7086
2019-01-03 01:48:52 +08:00
第一个问题。
星号展开过长。你可以一次只删一部分文件。比如像 rm 2018* 这样只删除少量文件。

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

论 shell globbing 的坏处。
congeec
2019-01-03 04:01:54 +08:00
标题误导人,不是删除大文件报错,是文件名不符合 Linux 命名惯例导致 rm 没法正确识别文件名
yanaraika
2019-01-03 04:11:09 +08:00
不要 ls 再 pipe,find . -type f -max-depth 1 -delete 是正确的
runAll
2019-01-03 08:32:52 +08:00
用 rsync,拿一个空目录和需要删除清空目录同步
rsync --delete-before -a -H -v --progress --stats 空目录 待清空目录
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
2019-01-03 09:46:59 +08:00
@yanaraika 你这里的“ max-depth ”写啥
Ewig
2019-01-03 09:47:43 +08:00
@ptyfork 没明白你这里的-depth 的意思
yulgang
2019-01-03 09:55:41 +08:00
cd 到目标目录,cd 到目标目录,cd 到目标目录

#rm 列过长处理:
find . -name "*" | xargs rm -rf '*'

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/523308

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX