find命令与xargs
⼀:find查⽂件,xargs把find查到的结果当做输⼊进⾏下⼀步的具体操作
#另外find可以可exec结合执⾏命令,但是exec是要等find命令执⾏完成之后才对find执⾏完成的结果进⾏操作,然⽽很不幸的是当⽂件太多的时候会出现⽂件队列过长的提⽰,这是应为linux有个临时内存地址只保存128K的数据,我们有个服务器⽬录中有数万的⽂件,要对其进⾏分类,使⽤exec就不⾏,因此就到了xargs⼤显⾝⼿的时候了:
1.1:常⽤参数:
1.1.1:-0,当sdtin含有特殊字元时候,将其当成⼀般字符,例如:
[root@saltminion ~]# echo "%" | xargs -0 echo > 1
[root@saltminion ~]# cat 1
%
1.1.2:-a file 从⽂件中读⼊作为sdtin
find查命令的使用# xargs -a /etc/passwd echo > 1
# cat 1
1.1.3:-e flag ,注意有的时候可能会是-E,flag必须是⼀个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停⽌
[root@saltminion ~]#
find a test file!
[root@saltminion ~]# | xargs -E "test" echo
find a
1.1.4:-p 当每次执⾏⼀个argument的时候询问⼀次⽤户
[root@saltminion ~]#
find a test file!
1.1.5:-n num 后⾯加次数,表⽰命令在执⾏的时候⼀次⽤的argument的个数,默认是⽤所有的
[root@saltminion ~]#
find a test file!
[root@saltminion ~]# | xargs -n2 echo
find a
test file!
1.1.6:-t 表⽰先打印命令,然后再执⾏
1.1.7:-i 或者是-I,这得看linux⽀持了,将xargs的每项名称,⼀般是⼀⾏⼀⾏赋值给{},可以⽤{}代替,可以⽤于对⽂件移动等操作。
#find的时间是从执⾏时间开始往前24⼩时为⼀天,如果是-ctime +1则是上⼀天当前时间之前的⽂件
# find /data/ftpsite/pmsc/radar/latlon/single/ -type f -mtime +1 | xargs -t -i mv {} /data/ftpsite/pmsc/radar/latlon/history/
# find /data/ftpsite/pmsc/radar/latlon/single/ -type f -mtime +1 | xargs -t -i cp {} /data/history/
# /bin/find /data/ftpsite/pmsc/radar/latlon/single/ -type f -ctime +2 | xargs rm -rf #直接删除匹配到的⽂件,⼀定要指定类型,不然匹配到⽬录也统统删除# /bin/find /data/ftpsite/pmsc/radar/latlon/single/ -type f -mtime +2 | xargs -t -i rm -rf {} #适⽤于数量众多的⽂件删除且显⽰每⼀条执⾏的shell命令
1.1.8:-r no-run-if-empty 当xargs的输⼊为空的时候则停⽌xargs,不⽤再去执⾏了
1.1.9:-s num 命令⾏的最好字符数,指的是xargs后⾯那个命令的最⼤命令⾏字符数
1.1.10:-L num Use at most max-lines nonblank input lines per command line.-s是含有空格的。
1.1.11:-l 同-L
1.1.12:-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这⾥修改的是xargs的分隔符。
1.1.13:-x exit的意思,主要是配合-s使⽤。
1.1.14:-P 修改最⼤的进程数,默认是1,为0时候为as many as it can ,这个例⼦我没有想到,应该平时都⽤不到。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论