您的位置:首页 > 运维架构 > Linux

Linux中“Argument list too long”解决方法

2017-11-23 10:42 477 查看
文章作者:Tyan

博客:noahsnail.com | CSDN | 简书

1. 背景

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

2. 解决方案

“Argument list too long”这个问题的解决主要会用到两个命令,
find
xargs


2.1 问题:要删除
test
文件夹下以
jpg
结尾的文件。

命令1为:

find test/ -name "*.jpg" | xargs -i rm {}


命令2为:

find test/ -name "*.jpg" -exec rm {} \;


2.2 问题:要拷贝
test
文件夹下以
jpg
结尾的文件到
train
目录。

命令1为:

find test/ -name "*.jpg" | xargs -i cp {} train


命令2为:

find test/ -name "*.jpg" -exec cp {} train \;


3. 命令解析

find test/ -name "*.jpg"
是指在
test
文件夹下查找名为
*.jpg
的文件。

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


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

参考资料

http://man.linuxde.net/xargs

http://www.cnblogs.com/peida/archive/2012/11/14/2769248.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: