find命令与xargs

一:find查找文件,xargs把find查找到的结果当做输入进行下一步的具体操作

#另外find可以可exec结合执行命令,但是exec是要等find命令执行完成之后才对find执行完成的结果进行操作,然而很不幸的是当文件太多的时候会出现文件队列过长的提示,这是应为linux有个临时内存地址只保存128K的数据,我们有个服务器目录中有数万的文件,要对其进行分类,使用exec就不行,因此就到了xargs大显身手的时候了:

1.1:常用参数:

1.1.1:-0,当sdtin含有特殊字元时候,将其当成一般字符,例如:

[[email protected] ~]# echo "%" | xargs -0 echo > 1
[[email protected] ~]# cat 1
%

1.1.2:-a file 从文件中读入作为sdtin

# xargs  -a /etc/passwd  echo  > 1

# cat 1

1.1.3:-e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止

[[email protected] ~]# cat 1.txt
find a test file!
[[email protected] ~]# cat 1.txt  | xargs -E "test" echo
find a

1.1.4:-p 当每次执行一个argument的时候询问一次用户

[[email protected] ~]# cat 1.txt 
find a test file!

1.1.5:-n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的

[[email protected] ~]# cat 1.txt 
find a test file!
[[email protected] ~]# cat 1.txt  | 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 ,这个例子我没有想到,应该平时都用不到。

原文地址:https://www.cnblogs.com/-xuan/p/12289775.html

时间: 2024-10-16 03:45:41

find命令与xargs的相关文章

Linux xargs命令,-print0,xargs -0的应用

xargs是一个过滤器,可以给命令传递参数;也是组合多个命令的一个工具,它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理. 通常情况下,xargs从管道或者stdin中读取数据,然而它也能够从文件的输出中读取数据. xargs的默认命令是echo,这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代. xargs是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令,下面是一些如何有效使用xargs 的实用例子.

Linux 文件查找命令find,xargs详述

Linux文件查找命令find,xargs详述     <exec 后期讲解> 关于find命令 由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限. 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统). 一.find 命令格式 1.find命令的一般形式为:

Linux文件查找命令find,xargs详述

转自:http://www.linuxsir.org/main/node/137本文进行了整理修订 Linux文件查找命令find,xargs详述 摘要: 本文是find 命令的详细说明,可贵的是针对参数举了很多的实例,大量的例证,让初学者更为容易理解:本文是zhyfly兄贴在论坛中:我对本文进行了再次整理,为方便大家阅读: 目录 版权声明 前言:关于find命令 一.find 命令格式 1.find命令的一般形式为: 2.find命令的参数: 3.find命令选项: 4.使用exec或ok来执

find命令之xargs,exec

一,find命令之xargs: 在 使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行.但有些系统对能够传递给exec的命 令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误.错误信息通常是“参数列太长”或“参数列溢出”.这就是xargs命令的用处所在, 特别是与find命令一起使用. find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样.这样它可以先处理最先

Linux文件查找命令find,xargs详述【转】

转自:http://blog.csdn.net/cxylaf/article/details/4069595 转自http://www.linuxsir.org/main/?q=node/137 Linux文件查找命令find,xargs详述 总结:zhy2111314来自:LinuxSir.Org整理:北南南北摘要: 本文是find 命令的详细说明,可贵的是针对参数举了很多的实例,大量的例证,让初学者更为容易理解:本文是zhyfly兄贴在论坛中:我对本文进行了再次整理,为方便大家阅读: 目录

find命令-exec选项,find命令配合xargs

一.find命令-exec选项这里只说两点:find正则匹配搜索,以及-exec选项1.正则匹配查找 find /etc/ -type f -name "s*" ##在/etc/目录下搜索以s为文件名开头的文件:注意:如果文件名使用正则匹配,那么需要加双引号,否则会报错:这里只列举了通配匹配方式,其他正则方式如"[ab].sh","s?"等不再介绍:2.使用-exec选项find ./ -type f -name "1*" -

每天一个 Linux 命令(21):find命令之xargs

在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行.但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误.错误信息通常是"参数列太长"或"参数列溢出".这就是xargs命令的用处所在,特别是与find命令一起使用. find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样.这样它可以先处理最先获取的一

(转载)管道命令和xargs的区别(经典解释)

一直弄不懂,管道不就是把前一个命令的结果作为参数给下一个命令吗,那在 | 后面加不加xargs有什么区别 NewUserFF 写道:懒蜗牛Gentoo 写道:管道是实现“将前面的标准输出作为后面的标准输入”xargs是实现“将标准输入作为命令的参数” 你可以试试运行: 代码:echo "--help"|catecho "--help"|xargs cat 看看结果的不同. 试过了,依然不是很确定的明白到底是什么意思,自己再探索一下看看把 如果你直接在命令行输入cat

每天一个linux命令(21):find命令之xargs

在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行.但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误.错误信息通常是“参数列太长”或“参数列溢出”.这就是xargs命令的用处所在,特别是与find命令一起使用. find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样.这样它可以先处理最先获取的一部分文件,然后是下一批,并如此

每日linux命令学习-xargs命令

xargs命令 xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从文件的输出中读取数据.xargs的默认命令是echo,这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代. xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令.      简单来说,通常与“|”搭配