Linux遇到“Argument list too long”

文章目录

在Linux中使用cp, mv, rm, zip等命令时有时会遇到“Argument list too long”的错误,主要是要进行操作的文件过多导致的。

解决方案

主要有两种方法:

  • 通过命令find+xargs解决
  • 通过命令find+exec解决(此方法需要遍历文件,因此耗时较多)

示例

  1. 拷贝data文件夹下.png格式的文件到train目录

    # 方法一
    find data/ -name "*.png" | xargs -i cp {} train
    # 方法二
    find data/ -name "*.png" -exec cp {} train \;
    
  2. 删除data文件夹下.png格式的文件

    # 方法一
    find data/ -name "*.png" | xargs -i rm {}
    # 方法二
    find data/ -name "*.png" -exec rm {} \;
    
  3. 压缩当前目录中train_txt文件夹下.txt结尾的文件至当前目录,并命名新压缩文件为train_txt.zip

    # 方法一
    find train_txt/ -name "*.txt" | xargs -i zip train_txt.zip {} 
    # 方法二
    find train_txt/ -name "*.txt" -exec  zip train_txt.zip {} \;
    

find xxx/ -name "*.xxx"是指在指定文件夹下查找指定名称的文件。

xargs是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。-i会将xargs的内容赋值给{}

-exec参数后面是指执行其后面的命令,-exec;为结尾,由于各个系统中分号的意义不同,因此用\进行转义,即\;,此外,运行过程中{}会被find命令的结果替换。



Reference

https://blog.csdn.net/weixin_42782150/article/details/107154593

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值