2020/10/23:Linux中执行zip命令碰到“Argument list too long“的解决办法

遇到的问题:

   `执行zip命令碰到"Argument list too long"`

直观的问题描述:

Linux下在使用cp,mv,rm、zip等命令时经常会碰到“Argument list too long”的错误,这主要是因为这些命令的参数太长,即:文件个数过多导致的。

解决办法:

# 方法一:
find dir/ -name "*.bin" | xargs -i zip aa.zip {
    
    }
# 方法二:
find dir/ -name "*.bin" -exec zip aa.zip {
    
    } \;

其中dir/为源文件夹地址;

"*.bin"为源文件名;

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

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

同样的,rm以及cp的命令如下:

# 删除文件夹下以bin结尾的文件
# 方法一:
find dir/ -name "*.bin" | xargs -i rm {
    
    }
# 方法二:
find dir/ -name "*.bin" -exec rm {
    
    } \;
# 拷贝文件夹下以bin结尾的文件到目标文件目录下
# 方法一:
find dir/ -name "*.bin" | xargs -i cp {
    
    } dir1
# 方法二:
find dir/ -name "*.bin" -exec cp {
    
    } dir1 \;

问题

上述方法的确解决了问题,但是对于大量文件,处理速度仍然较慢

本解决办法参考:Linux中执行zip、cp、rm等命令时出现“Argument list too long”的解决方法

猜你喜欢

转载自blog.csdn.net/weixin_43624728/article/details/109239694