AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 129843
Accepted
codeholic
codeholic
Asked: 2010-04-07 09:59:40 +0800 CST2010-04-07 09:59:40 +0800 CST 2010-04-07 09:59:40 +0800 CST

从目录中删除文件:内存耗尽

  • 772

这个问题是报告“参数列表太长”时如何从目录中删除所有文件的逻辑延续

我有

drwxr-xr-x  2 doreshkin doreshkin 198291456 Apr  6 21:35 session_data

我试过了

find session_data -type f -delete
find session_data -type f | xargs rm -f
find session_data -maxdepth 1 -type f -print0 | xargs -r0 rm -f

结果是一样的:

find: memory exhausted

我该怎么做才能删除这个目录?

directory
  • 6 6 个回答
  • 2320 Views

6 个回答

  • Voted
  1. fsckin
    2010-04-07T10:55:36+08:002010-04-07T10:55:36+08:00

    通过头部管道查找结果似乎对我有用(我有一个类似的问题,即每分钟上传一次来自 6 个摄像头的安全摄像头镜头)

    find . -type f | head -1000 | xargs rm
    

    如果是,则循环它:

    for i in {1..999}
    do
       find . -type f | head -1000 | xargs rm
    done
    

    将 999 替换为那里有多少个文件(如果你知道的话)。

    • 2
  2. Best Answer
    tylerl
    2010-04-07T11:09:46+08:002010-04-07T11:09:46+08:00

    这听起来像一个问题find。我注意到一些关于人们在使用特定版本的 GNU findutils 时遇到该错误的错误报告。

    您可以尝试将“find”替换为“ls”和“grep”。像这样的东西:

    cd somedir
    \ls -f | grep "something" | xargs -d "\n" rm
    

    \ls相反,反斜杠ls告诉 bash 忽略任何会影响输出格式的别名。你也可以说/bin/ls如果你忘记了反斜杠把戏。该-f选项告诉它禁用排序(这可以节省时间/内存)并包含隐藏文件。xargs的-d "\n"参数告诉它在换行符而不是空格上拆分。请注意,-d并非所有版本的 xargs 都支持这一点,这很遗憾。

    请注意,这是ls something*行不通的,因为它something*是在 bash 中扩展的,而不是由 ls 扩展的,并且会导致“参数列表太长”错误。这就是您通过 grep 管道传输结果的原因。

    • 2
  3. voretaq7
    2010-04-07T10:36:59+08:002010-04-07T10:36:59+08:00

    尝试使用ls而不是 find ( ls -1 | xargs rm)。

    或者

    在输出上使用 for 循环ls

    #!/bin/sh
    for i in `ls -1`; do
      rm $i
    done
    

    (在这两种情况下,如果您仍然遇到问题,shell 可能会达到内存上限:尝试ls通过管道head缩短列表)

    或者

    写在 perl/C/etc 中。(迭代readdir的输出和垃圾收集,你去)

    ...可能还有更多“或”案例,但这些案例立即浮现在脑海中。

    • 0
  4. Kyle Brandt
    2010-04-07T10:45:08+08:002010-04-07T10:45:08+08:00

    我想知道最新版本的 rsync 将空目录作为源和--delete选项做什么......

    • 0
  5. deleted
    2010-04-07T10:48:43+08:002010-04-07T10:48:43+08:00
    find . -type f -print | awk '{ print "rm \"" $1 "\""} | sh
    
    • 0
  6. Tim Spriggs
    2012-03-01T19:42:19+08:002012-03-01T19:42:19+08:00

    只需将 rm 作为 find 命令的一部分运行。不需要管道/xargs/花式打印。

    寻找 。-exec rm -f {} +

    • 0

相关问题

  • 如何计算目录中的所有子文件夹?

  • 如何使用 rsync 保持完整路径?

  • 网站目录结构的良好约定是什么?

  • 是否可以使网络驱动器显示为文件夹?

  • 是否有一个很好的总结,说明 Linux 安装中每个主要文件夹中应该包含哪些内容?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve