Contents
3.11. xagrs使用¶
3.11.1. xargs功能:从标准输入执行命令¶
3.11.2. 常用选项:¶
-a file #从指定文件读取数据作为标准输入
-0 #处理包含空格的文件名,print0
-i #标准输入的结果以{}代替
-I #标准输入的结果以指定的名字代替
-t #显示执行命令
-p #交互式提示是否执行命令
-n #最大命令行参数,每次xargs处理几个数据
echo "1 2 3 4 5" |xargs -n1 #行转为列
echo "1 2 3 4 5" |xargs -n2 #最长两列显示
ls /etc/yum.repos.d/*repo |xargs -i mv {} {}.bak # 备份原有的yum源文件
rpm -qa |grep yum |xargs rpm -e --nodeps # 删除卸载掉yum
seq 1 10 |xargs -i date -d "{} days " +%Y-%m-%d # 创建未来十天时间
ls | xargs -n 8 echo #以每行8列的形式列出当前目录下的所有文件.
find / -perm +7000 | xargs ls -l # 将前面的内容,作为后面命令的参数
seq 1 10 |xargs -i date -d "{} days " +%Y-%m-%d # 列出10天日期
ps ax | grep "$PROCESS_NAME" | awk '{print $1}' | xargs -i kill {} 2&>/dev/null
# -----------------------------------------------------------
# 注意:
# -i 参数是xargs命令的"替换字符串"选项.
# 大括号对的地方就是替换点
#指定每行最大的参数数量n,我们可以将任何来自 stdin 的文本划分成多行,每行n个参数。
#每一个参数都是由 " " (空格)隔开的字符串。空格是默认的定界符。下面的方法可以将
#单行划分成多行:
cat example.txt | xargs -n 3
#可以用自己的定界符来分隔参数。用 -d 选项为输入指定一个定制的定界符:
$ echo "splitXsplitXsplitXsplit" | xargs -d X
split split split split
#结合 -n 选项,我们可以将输入划分成多行,而每行包含两个参数:
$ echo "splitXsplitXsplitXsplit" | xargs -d X -n 2
split split
split split
#结合 find 使用 xargs
xargs 和 find 算是一对死党。两者结合使用可以让任务变得更轻松。不过人们通常却是以一
种错误的组合方式使用它们。例如:
$ find . -type f -name "*.txt" -print | xargs rm -f
#用 find 匹配并列出所有的 .txt文件,然后用 xargs 将这些文件删除:
$ find . -type f -name "*.txt" -print0 | xargs -0 rm -f
这样就可以删除所有的.txt文件。 xargs -0 将\ 0 作为输入定界符