多行输入单行输出:

1
2
3
4
5
6
# cat test
1 2 3
4 5 6

# cat test| xargs
1 2 3 4 5 6

多行输出

1
2
3
4
# cat test | xargs -n 2
1 2
3 4
5 6

自定义一个定界符

1
2
3
4
5
6
7
8
# -d 选项可以自定义一个定界符:
echo "nameXnameXnameXname" | xargs -dX
name name name name

# 结合 -n 选项使用:
echo "nameXnameXnameXname" | xargs -dX -n2
name name
name name

复制所有图片文件到 /data/images 目录下:

1
ls *.jpg | xargs -n1 -I {} cp {} /data/images

xargs 结合 find 使用
用 rm 删除太多的文件时候,可能得到一个错误信息:/bin/rm Argument list too long. 用 xargs 去避免这个问题:

1
2
find . -type f -name "*.log" -print0 | xargs -0 rm -f
# xargs -0 将 \0 作为定界符。

统计一个源代码目录中所有 php 文件的行数:

1
find . -type f -name "*.php" -print0 | xargs -0 wc -l

查找所有的 jpg 文件,并且压缩它们:

1
find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz

查找并替换

1
find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g'

去除换行符和首尾空格

1
echo "   11 22" | xargs echo -n