Linux命令xargs使用简介 (linux xargs)

在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下查找大文件

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为单位,提高信息可读性

linux下备份一个目录下所有文件及目录,应该用什么命令?

这里教大家如何用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下备份一个目录下所有文件及目录,应该用什么命令?的信息别忘了在本站进行查找喔。


数据运维技术 » Linux命令xargs使用简介 (linux xargs)