在Linux系统中,xargs是一个非常实用的命令工具,可以将标准输入数据转换成命令行参数。
一、xargs基本用法
xargs命令的基本用法非常简单,只需要将命令的输出作为xargs的输入,就可以实现将输出转换为命令行参数的功能。
例如,将列表中的所有文件复制到新目录中:
“`
$ ls | xargs -I {} cp {} new_directory
“`
其中,-I {}选项指定xargs要替换的占位符,{}表示要替换的内容。cp命令会将列表中的每个文件复制到new_directory目录中。
另外一个常见的用法是删除所有匹配特定模式的文件。例如,删除所有的log文件:
“`
$ ls | grep ‘.log’ | xargs rm
“`
在上面的命令中,xargs将所有以.log结尾的文件名作为rm命令的参数,删除所有匹配的文件。
二、xargs高级用法
除了基本用法之外,xargs还具有许多高级用法,可以更快捷、方便地处理各种情况。
1.控制参数格式
xargs命令将输入视为行而不是空格分隔的值。在某些情况下,可以使用-d选项指定分隔符,以分隔不同的参数。
例如,在目录中查找所有的文件并打印它们的文件名:
“`
$ find . -name ‘*.js’ | xargs -d ‘\n’ -I {} sh -c ‘echo {}’
“`
在上面的命令中,-d选项用于指定换行符为参数分隔符。-I {}仍然用于定义替换占位符,sh -c ‘echo {}’则是要运行的命令。
2.并行执行任务
xargs命令还支持使用-n和-P选项来控制任务的并发执行数量。
例如,使用curl命令并行下载列表中的图片:
“`
$ cat file-list.txt | xargs -n 1 -P 4 curl -O
“`
在上面的命令中,-n 1选项指定每次传递给curl命令的参数数量为1,-P 4选项指定并行执行的进程数为4,使得curl命令可以同时下载多个文件,提高了下载效率。
3.使用find命令
在处理大量文件时,我们经常需要使用find命令来筛选要处理的文件。xargs命令可以与find结合使用。
例如,将目录中符合条件的文件名列表传递给xargs命令:
“`
$ find /var/log -name ‘*.log’ -type f -print0 | xargs -0 rm
“`
在上面的命令中,-print0选项告诉find命令用null字符分隔文件列表,-0选项用于xargs命令来处理null分隔的文件列表。
4.使用命令替换
xargs命令还支持使用命令替换。这使得可以动态生成参数列表。
例如,查找所有以.h文件结尾并将其编译为.o文件的C语言源代码文件:
“`
$ find . -name ‘*.c’ | xargs -I {} sh -c ‘gcc -c $(basename {} .c).c -o $(basename {} .c).o’
“`
在上面的命令中,$(basename {} .c)用于从源代码文件名中提取出基础名称,然后使用gcc命令将其编译为.o文件。
在Linux系统中,xargs命令是一种非常实用的工具,可以将标准输入数据转换为命令参数。通过使用xargs,可以更快捷、方便地处理各种情况。此外,xargs还支持高级用法,如控制参数格式、并行执行任务、使用find命令和命令替换等。只要掌握了xargs命令的这些用法,就可以更加灵活地处理各种命令行任务。
相关问题拓展阅读:
Linux上查找更大文件的3种方法
之一种:ls
最简单的方法就是借助 ls 命令,因为 ls 命令本身输出是带文件大小信息的。
比如,我要列出 /data/log/ 目录中的20个更大文件,可以:
ls -lSh /data/log/ | head -20
第二种:find
find 本身就是查找命令,可以递归查找一个目录的子目录,所以用它是自然的。
比如,查找/etc目录下更大的5个文件:
find /etc -type f -printf “%s\t%p\n” | sort -n | tail -5 | xargs ls -Slh
查找当前用户名下更大的10个文件
find $HOME -type f -printf “%s\t%p\n” | sort -nr | head -10 | xargs ls -Slh
查询大于200M的文件
find / -type f -size +200M | xargs ls -Slh
查询100M和200M之间的文件
find / -type f -size +100M -size +200M | xargs ls -Slh
查询root目录下更大的5个文件
find /root -type f -exec ls -s {} ; | sort -n | tail -n5 | xargs ls -Slh
查询/目录下10天以前最桐早大的5个文件
find / -type f -mtime +10 -printf “%s\t%p\n” | sort -n | tail -5 | xargs ls -Slh
第三种:du
du 命令可以查看磁盘空间的使用情况,自然也可以用来查看磁盘上占用空间较多的文件和文件夹。
查找/root下5个更大的文件
du -ah /root | sort -nr | head -n5
查找当前目录下更大的5个目录
du -ah | sort -nr | head -n5
查找
根目录
下更大目录/文件(包括子文件夹)
du -Sh / | sort -rh | head -n10
只看大小在 GB 范围内的所有文件
du -ah / | grep “G\b”
涉及到的命令参数:
find:
-exec:假设find指令的回传值为True,就执行该指令;
-mtime n 查找系统中最后n天被改变文件数据的文件 +大于 -小于
-type 查找某一类型的文件
b -块设备文件;
c -字符设备文件;
d -目录;
p -管道文件;
f -普通文件;
l -符号链接文件;
s -socket文件;
-printf:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;袭轮卜
sort:
-n 依照数值的大小排序;
-r 以相反的顺序来排序;
xargs:传递参数
ls -Slh
-Sl 从大到小显示详情
-Slr 从小到大显示详情
-h humans 以人类易读的方式显示(正常情况下显示为bit,加上-h后 显示的为KB MB GB TB等)
du:
-a 显示所有目录拍穗或文件的大小
-h 以K,M,G为单位,提高信息可读性
这里教大家如何用find、xargs和tar命令完成上面的功能。
建立一个测试环境,新建几个文件
# cd /tmp
# mkdir test
# cd test
# touch a.php b.js c.css 1.png
# ls
1.png a.php b.js c.css
接下来,通过find命令找出指定后缀的文件,为了支持多个后缀文件,find命令用到了正则匹配
# find . -type f -regex “.*\.\(php\|js\|css\)”
./b.js
./a.php
./c.css
-regex后面的参数看起孙谨来很复杂,其实很简单,我来做个解释,双引号就不需要解释了吧
.*\.\(php\|js\|css\) 简化一下就是.*.(php|js|css),其实就是对.()|做皮轿了下转义而已,开头的.*匹配除换行符外的任意字符(这个懂正则表达式的应该都明白)
找出文件后,就是如何备份这些文件了,tar需要指定源文件,怎么获取find出来的这些文件,并传给tar呢,xargs的作用就来了。看到下面xargs输出的是什么了吧,这个正是tar需要的。
# find . -type f -regex “.*\.\(php\|js\|css\)” | xargs
./b.js ./a.php ./c.css
# find . -type f -regex “.*\.\(php\|js\|css\)” | xargs tar czvf test.tar.gz
./b.js
./a.php
./c.css
下面看看文件是否备份成功了
# tar tzvf test.tar.gz
-rw-r–r– root/root:38 ./b.js
-rw-r–r– root/root 则握基:37 ./a.php
-rw-r–r– root/root:38 ./c.css
应该用cp
-rf
源目录闹察
备份目录
cp是复制命令
-r
递归处理,指定目录下的文件和子目录一并处理
-f
强行复制,无论目标是否存在
知道指定后缀名的文件总个数命令:
find
.
-name
*.cpp
|
wc
-l
知道一个目录下代码总行数以及单个文件行数:
find
.
-name
*.h
|
xargs
wc
-l
linux统计文件夹中文件数目。
之一种方法:
ls
-l|grep
“^-”|wc
-l
ls
-l
长列表输出该目录下文件信息(注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等)。如果ls
-lR|grep
“^-”|wc-l则可以连子目录下的文件一起统计。
grep
^-
这里梁历将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是
^d
wc
-l
统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。
第二种方法:
find
./
-type
f|wc
-l
由于默认find会去子目录查找,如果只想橡弯搜查找当前目录的文件用
需要说明的是第二种方法会比之一种方法快很多,尤其是也统计子目录时。
扩展资料
linux
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux操作系统诞生于1991
年10
月5
日(这是之一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。
参考资料来源:百度百科:linux
1、cp -rf 源目录 备份目录
2、cp是复制命令
3、-r 递归处理,指定目录下的文件和子目录一并处理
4、-f 强行复制,无论目标是否存在
一、使用tar命令进行备份
tar命令本来的作用是能够把很多文件放到一个小文件中进行归档,但是同时又能够对文件进行压缩。所以,一般情况下我们都采用乱乎tar进行文
件整理和压缩。
/* 把/root整个目录进行压缩备份 */
# tar cvzf /tmp/root_backup_1215.tar.gz /root
那么我们就能哗核悉够把 /tmp/root_backup_1215.tar.gz进行存储,比如保存到磁带机上等。
说明: 压缩的tar档案通常的扩展名是 tar.gz、tgz、或者tar.bz2。前两个扩展名一般是使用gzip命令进行压缩的tar档案,后一个扩展名是
基于bzip2的压缩,因为压缩算法的原因,后一个压缩更强。
同时,我们也很容易把已经打包压缩的文件进行恢复:
/* 从备份文件中进行还原 */
# tar tkvzf root_backup_1215.tar.gz
说明: tar命令是路经相关的。如果将文件用绝对路经保存到一个目录中(即开头为斜杆,如/home/mj),则可以从计算机上的任何位置将文
件恢复到这个目录。如果使用相对路经(没有开头的斜杆,如/home/mj),则文件不一定恢复到原址,而是取决于当前工作目录。
/* 把备份文件释放出来 */
# tar zxvf root_backup_1215.tar.gz
/* 把/root目录备份并且压缩 */
# tar czvf root_backup_1215.tar.gz /root
二、使用cpio备份存档
cpio (copy in/out) 命令可以建立存档,跟tar不同之处在于,它能够处理标准的输入输出。顾名思义,就是复制,输入,输出的意思。
如果要备份root的文件,使用下列命令:
# find /root | cpio -o > /tmp/root_backup_1215.cpio
cpio能够使用通配符将一组文件设置成标准输入。比如,下面见所有的.tif文件建立档案:
# find *.tif | cpio -o > /tmp/back.cpio
记住,find命令很灵活,下列命令把系统中所有的.tif文件进行归档:
# find / -name ‘*.tif’ | cpio -o > /tmp/back_tif.cpio
同时,也很容易从cpio档案中恢复文件。下列命令恢复back_tif.cpio中的文件:
# cpio -i /dev/st0
# cpio -i
三、磁带转存和恢复
dump与restore命令使递增备份与差异备份很容易实现。dump可以取得目录内容,restore可以交互式将备份文件返回原址。
尽管这些命令最常用于磁带机,但是也同样适合其他介质,比如可以备份到软盘。
1、用dump存档
dump有三个基本选项,可以设置一系列命令,从主目录备份,差异备份。例如,我们要把/home/mao目录备份到/devnst0磁带机上:
# dump 0f /dev/nst0 /home/mao
# dump 1f /dev/nst0 /home/mao
# dump 2f /dev/nst0 /home/mao
# dump 3f /dev/nst0 /home/mao
# dump 4f /dev/nst0 /home/mao
# dump 5f /dev/nst0 /home/mao
之一个命令 # dump 0f /dev/nst0 /home/mao 是建立/home/mao目录的完全备份,后面的命令一次运行,只对商议次备份之后改变的文件建立
差异备份。氏链
提示: 为了加速备份,可以使用磁带机允许的更大块长。例如,命令# dump 0f /dev/nst0 /home/mao -b 2023使用的块长为2023字节。可以
使用更大的块长来减少备份时间,但是也要在restore命令的时候使用想适应的块来还原。
如果想要备份整个系统,可以使用u选项,例如:
# dump 0uf /dev/nst0 /
2、用restore进行还原
可以使用restore命令浏览dump命令备份的文件清单。例如:
# restore -tf /dev/fd0
也可以用恢复搜索的方式搜索当前备份。
linux xargs的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux xargs,Linux命令xargs使用简介,Linux下查找大文件,linux下备份一个目录下所有文件及目录,应该用什么命令?的信息别忘了在本站进行查找喔。
香港服务器选创新互联,2H2G首月10元开通。
创新互联(www.cdcxhl.com)互联网服务提供商,拥有超过10年的服务器租用、服务器托管、云服务器、虚拟主机、网站系统开发经验。专业提供云主机、虚拟主机、域名注册、VPS主机、云服务器、香港云服务器、免备案服务器等。
分享标题:Linux命令xargs使用简介(linuxxargs)
本文URL:http://www.shufengxianlan.com/qtweb/news22/437172.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联