https://www.cnblogs.com/xiaofeng666/p/10800939.html

xargs与find经常结合来进行文件操作,平时删日志的时候只是习惯的去删除,比如 # find . -type f -name "*.log" | xargs rm -rf * 就将以log结尾的文件删除了,如果我想去移动或者复制就需要使用参数来代替了。

xargs -i 参数或者-I参数配合{}即可进行文件的操作。

[root@centos17 linshi]# find . -type f -name "*.log" | xargs -i cp {} /tmp/k/

[root@centos17 linshi]# find . -type f -name "*.log" | xargs -I {} cp {} /tmp/n/

结果出来了,
加-i 参数直接用 {}就能代替管道之前的标准输出的内容;
加 -I 参数 需要事先指定替换字符。

其他案例:
echo --help | xargs cat  
#将echo输出的信息作为cat命令的参数使用,xargs传递参数,将前一个命令的标准输出作为后一个命令的参数使用
ls *.txt | xargs -i mv {} /mnt
#查看当前目录下所有txt文件,xargs的-i参数是将前面的标准输出作为参数传递给{}
echo "ni|shi|shui" | xargs -d"|" -n2
#xargs的-d参数指定分隔符,-n表示每行显示的列数

[root@b test]# find . -name "*.txt" -exec tar -cf a.tar {} \;
[root@b test]# tar -tf a.tar
./m.txt

find命令的-exec参数将前面find查找到的内容交给后面的tar命令打包,由于find每次查找一个就执行一次exec,所以tar最后打包的文件全部覆盖只剩下最后一个文件。

[root@b test]# find . -name "*.txt" | xargs -i tar cf b.tar {}
[root@b test]# tar -tf b.tar
./m.txt

[root@b test]# find . -name "*.txt" -print | xargs -i tar cf b.tar {}
[root@b test]# tar -tf b.tar
./m.txt

#写法相同,xargs的-I参数表示将前面find的信息传递到后面{}进行打包,每查找到一个文件就进行打包一次,所以会重复覆盖。

[root@b test]# find . -name "*.txt" -print0 | xargs -0 tar cf b.tar
[root@b test]# tar -tf b.tar
./a.txt
./b.txt
./m.txt

#print0表示将find查找的内容在同一行输出,xargs的-0参数指定以null为分隔符来进行打包。

xargs使用
 
删除海量文件
[root@x112 test]# ls | xargs -n 50 -i rm -rf {}
将ls输出的内容,每50个一组,传递给rm后面的{},作为其参数进行执行。可以删除目录下超多文件。
 
 
 
查看find过滤的指定文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[root@x112 ~]# find linshi/ -mtime -3 | sed '1d' | xargs ls -lh
-rw-r--r-- 1 root root 148 Oct 24 18:24 linshi/10_for1.sh
-rw-r--r-- 1 root root 147 Oct 24 17:52 linshi/10_for.sh
-rw-r--r-- 1 root root  43 Oct 24 23:47 linshi/c.txt
-rw-r--r-- 1 root root  32 Oct 24 20:06 linshi/d.txt
  
linshi/test:
total 0
[root@x112 ~]# find linshi/ -mtime -3 | xargs ls -lh
-rw-r--r-- 1 root root 148 Oct 24 18:24 linshi/10_for1.sh
-rw-r--r-- 1 root root 147 Oct 24 17:52 linshi/10_for.sh
-rw-r--r-- 1 root root  43 Oct 24 23:47 linshi/c.txt
-rw-r--r-- 1 root root  32 Oct 24 20:06 linshi/d.txt
  
linshi/:
total 36K
-rw-r--r-- 1 root root  148 Oct 24 18:24 10_for1.sh
-rw-r--r-- 1 root root  147 Oct 24 17:52 10_for.sh
-rw-r--r-- 1 root root  160 Oct 17 16:14 a.txt
-rw-r--r-- 1 root root   43 Oct 24 23:47 c.txt
-rw-r--r-- 1 root root   32 Oct 24 20:06 d.txt
-rw-r--r-- 1 ftp  root  501 Aug 13 09:35 fstab.bak
-rw-r--r-- 1 root root   99 Aug 19 20:36 host_for.sh
-rw-r--r-- 1 ftp  root 1.1K Aug 17 12:47 ks.cfg
-rw-r--r-- 1 root root   63 Aug 19 20:46 scp_copy.sh
drwxr-xr-x 6 ftp  root  269 Sep  7 20:57 software
drwxr-xr-x 2 root root    6 Oct 27 00:06 test
  
linshi/test:
total 0
[root@x112 ~]# find linshi/ -mtime -3
linshi/
linshi/10_for.sh
linshi/10_for1.sh
linshi/d.txt
linshi/c.txt
linshi/test

总结:由上面案例可知,find命令查找的文件,默认包含查找文件夹范围本身,需要剔除文件夹范围本身,查询结果才为真。

为者常成,行者常至 Give me five~!

[转帖]xargs详解的更多相关文章

  1. [转帖]万字详解Oracle架构、原理、进程,学会世间再无复杂架构

    万字详解Oracle架构.原理.进程,学会世间再无复杂架构 http://www.itpub.net/2019/04/24/1694/ 里面的图特别好 数据和云 2019-04-24 09:11:59 ...

  2. [转帖]HBase详解(很全面)

    HBase详解(很全面) very long story 简单看了一遍 很多不明白的地方.. 2018-06-08 16:12:32 卢子墨 阅读数 34857更多 分类专栏: HBase   [转自 ...

  3. [转]xargs详解

    为什么要用xargs,问题的来源 在工作中经常会接触到xargs命令,特别是在别人写的脚本里面也经常会遇到,但是却很容易与管道搞混淆,本篇会详细讲解到底什么是xargs命令,为什么要用xargs命令以 ...

  4. linux shell 脚本攻略学习6-xargs详解

    xargs是一条Unix和类Unix操作系统的常用命令.它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题. 例如,下面的命令: rm `find /path -type f` ...

  5. xargs详解

    一.场景 这个命令是错误的 find ./ -perm +700 |ls -l 这样才是正确的 find ./ -perm +700 |xargs ls -l  二.用法 [root@localhos ...

  6. Linux文件查找命令find和xargs详解

    PS:find是个很强大的命令,能够匹配正则,查找对应权限,能够帮你精确的定位你的系统中的任何地方任何目录下的文件.下面这篇是关于find命令用法最详细的一篇了,记录下.还有要注意的:本文的分号:其实 ...

  7. linux xargs详解

    xargs  [-0prtx] [-E  eof-str] [-e[eof-str]] [--eof[=eof-str]] [--null] [-d delimiter] [--delimiter d ...

  8. [转帖]xargs命令详解,xargs与管道的区别

    xargs命令详解,xargs与管道的区别 https://www.cnblogs.com/wangqiguo/p/6464234.html 之前一直说要学习一下 xargs 到现在为止也没学习.. ...

  9. 【转帖】linux sort,uniq,cut,wc,tr,xargs命令详解

    linux sort,uniq,cut,wc,tr,xargs命令详解 http://embeddedlinux.org.cn/emb-linux/entry-level/201607/21-5550 ...

  10. PHP5 session 详解【经典】 -- 转帖

    PHP5 session 详解[经典] http协议是WEB服务器与客户端(浏览器)相互通信的协议,它是一种无状态协议.所谓无状态,指的是不会维护http请求数据,http请求是独立的,非持久的.而越 ...

随机推荐

  1. tee 实现双通道输出

    ls -l|tee >(wc -l) >(wc -c) > /dev/null

  2. C++篇:第四章_数组_知识点大全

    C++篇为本人学C++时所做笔记(特别是疑难杂点),全是硬货,虽然看着枯燥但会让你收益颇丰,可用作学习C++的一大利器 四.数组 (一)数组标准 以数组名作函数参数时,实参数组与形参数组都不必定义长度 ...

  3. 实践案例丨ACL2020 KBQA 基于查询图生成回答多跳复杂问题

    摘要:目前复杂问题包括两种:含约束的问题和多跳关系问题.本文对ACL2020 KBQA 基于查询图生成的方法来回答多跳复杂问题这一论文工作进行了解读,并对相关实验进行了复现. 1.摘要 1.1 复杂问 ...

  4. 技术实践丨手把手教你使用MQTT方式对接华为IoT平台 华为云开发者社区

    摘要:本文主要讲述使用MQTT方式对接华为云IoT平台的具体过程. 使用的方案:目标板为STM32L431BearPI(带E53扩展板); TCPIP功能由开发板的ESP8266提供:MQTT使用Pa ...

  5. 云小课|使用SpringBoot快速构建FunctionGraph HTTP函数

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:本篇云小课主要指导 ...

  6. 华为云数据库GaussDB(for openGauss):初次见面,认识一下

    摘要:本文从总体架构.主打场景.关键技术特性等方面进行介绍GaussDB(for openGauss). 1.背景介绍 3月16日,在华为云主办的GaussDB(for openGauss)系列技术第 ...

  7. Java变异出现错误:No enclosing instance of type XXX is accessible

    摘要:写java代码时遇到下面的编译错误. 本文分享自华为云社区<Java中出现No enclosing instance of type XXX is accessible问题>,作者: ...

  8. 100天搞定机器学习|Day59 主成分分析(PCA)原理及使用详解

    数学概念 方差:用来衡量随机变量与其数学期望(均值)之间的偏离程度.统计中的方差(样本方差)是各个数据分别与其平均数之差的平方的和的平均数. $$Var(X)=\frac{1}{n}\sum(x_i- ...

  9. 【flask】flask-sqlalchemy使用 flask-migrate使用 flask项目演示

    目录 昨日回顾 今日内容 1 flask-sqlalchemy使用 2 flask-migrate使用 3 flask项目演示 昨日回顾 类装饰器可能有两种含义: 使用类作为装饰器 装饰类的装饰器 基 ...

  10. The Cluster ID Zc7nlyfTQ5qPbhY2d8I_3A doesn't match stored clusterId Some(ZvQZIX9gTB-dj05be_i_-w) in meta.properties.

    启动kafka时报错(部分信息): [2022-05-12 20:26:05,589] INFO Cluster ID = Zc7nlyfTQ5qPbhY2d8I_3A (kafka.server.K ...