管道和xargs

2020-04-21  本文已影响0人  啊哈_6377

打卡作业:

1)在当前目录,所有的普通文件中,搜索文件名含有istester这个词

find ./  -type f | grep istester (只会搜索出来文件名中包含istester,非文件内容)

find ./ -type f | xargs grep  istester <==>find ./ -type f | xargs -i grep istester {}

(搜索出文件内容中含有istester的文件,输出文件和符合条件字符的行)

2)在当前目录,移动1天以内的所有内容到 ~/idoxu 目录

find ./ -atime -1 | xargs -i mv {} ~/idoxu

3)在当前目录,移动10天以前的所有内容到 ~/idoxu 目录

find . -atime +10 | xargs -i mv {} ~/idoxu

4)在/usr/isTester目录,移动文件大小为零的文件到~/idoxu目录下的 0size/ 文件夹

find /usr/istester -size 0 | xargs -i mv {} ~/idoxu/0size/

5)在/usr/isTester目录,移动大于200M的文件到 ~/idoxu目录下的 200size/ 文件夹

find /usr/istester -size 200M -type f | xargs -i mv {} ~/idoxu/200size/

思考总结:

1、" | "

作用:将左边命令的结果输出作为左边命令的输入

类似符号还有:

& 作用:将命令放到后台执行,如:redis-server &

&& 作用:左边命令执行成功后,执行右边的命令,如:echo "istester_a" >>idoxu/istester002.ini && echo "istester_b" >>idoxu/istester002.ini

||  作用:当左边命令执行失败后,才执行右边命令

2、"xargs"

作用:1、常和管道命令|一起使用,解决有的命令不支持使用管道来传递参数

    2、可将文本输入转换为其他格式输出

使用:

1、cat idoxu/new.ini | xargs  多行格式化为一行输出

2、cat idoxu/new.ini | xargs -n2  格式化为一行两个输出

3、cat idoxu/new.ini | xargs -n2 -ds  格式化按s分割,一行两个输出

4、find ./ -name "istester001*" | xargs -i mv {} /root/test_shen  -i 默认使用{}将前一命令的返回值传入到后已命令

5、find ./ -name "istester001*" | xargs -I [] rm -rf []  -I可指定符号代替前一命令的返回值

6、find ./ -name "istester001*" | xargs -i -p mv {} /root/test_shen -p参数是执行时提示确认是否执行

上一篇下一篇

猜你喜欢

热点阅读