xargs命令实例

2013-03-12

xargs更象一个筛选器,将符合管道传递过来的内容进行处理,这是一个极度高效的方法。xargs reads items from the standard input.

1、查询包含string的文件
find . -name '*.html'| xargs grep string

2、删除符合条件的文件
ls|xargs -i rm -rf {}

find . -name '*.log' -mtime +30| xargs rm -rf
find . -name '*.log' -mtime +30 -exec rm -rf {} \;
注意"{} \;"是一起用的,可以用"{} +"代替。
find . -name "*.log" -exec ls -l {} +

3、-I{}替换串replace-str
cat ip.txt | xargs -I {} echo {}/24
-i[replace-str]可以替代-Ireplace-str
cat ip.txt | xargs -i{} echo {}
cat ip.txt | xargs -iIP echo IP

在远程服务器列表的执行命令
cat ip.txt | xargs -I{} ssh -p322 root@{} hostname

4、批量文件改名

增加字符
ls -1 | xargs -t -i mv {} {}.bak

删减字符

#!/bin/sh
for i in `ls ABCD*`
do
n=${i#"ABCD"}
mv $i $n
done

或者

ls -1 ABCD* |sed 's/ABCD//'|xargs -t -i mv ABCD{} {}

删除A字符
#!/bin/sh
for file in `ls *A.wav`;do
n=`echo $file| sed 's/A//g'`
/bin/mv $file $n
done

5、批量删除包含code.html的行
find ./ -name "*.html" -exec grep code.html '{}' \; |xargs sed -i '/code.html/d'
find ./ -name "*.html" -exec grep code.html '{}' \; -exec sed -i '/code.html/d' {} \;

6、批量替换
find ./ -name "*.html" -exec grep .com '{}' \; -exec sed -i 's/.com/.cn/g' {} \;
find ./ -name "*.html" -exec grep .com '{}' \; |xargs sed -i 's/.com/.cn/g'

7、单行显示所有用户名
cut -d: -f1 < /etc/passwd | sort | xargs echo
awk '{print $1}' /etc/passwd | xargs echo

8、--verbose, -t
cat a
one two
three four
cat a |xargs
cat a |xargs --verbose
cat a |xargs --verbose --max-args=2

9、终止所有java进程
pgrep java|xargs kill -9

分类:Linux | 标签: |

相关日志

评论被关闭!