阅读目录(Content)

  • 1. 从当前目录下开始查找的所有文件,然后使用xargs命令来测试它们分别属于哪类文件
  • 2. 从根目录/开始查找名为core的文件或目录,并将查找结果保存到/tmp/core.log 文件中
  • 3:从当前目录下开始查找其他用户具有读、写和执行权限的文件,并收回相应的写权限
  • 4. 用grep命令在从当前目录下开始查找类型为文件,且文件内容中含有hostname的文件
  • 5. 从当前目录下开始查找名称中以log开头的文件或目录,并将其移动到dir1目录中
  • 6. 从当前目录下开始查找名称中以log开头的文件或目录,并将其移动到当前目录的父级目录中,移动时,进行询问
  • 7.find后执行xargs提示xargs: argument line too long解决方法:

在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。

find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。

在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高; 而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。

回到顶部(go to top)

1. 从当前目录下开始查找的所有文件,然后使用xargs命令来测试它们分别属于哪类文件

命令:

 find . -type f -print |xargs file

输出:

[root@localhost test]# ls
dir1  log1  log2
[root@localhost test]# find . -type f -print |xargs file
./log1: empty
./log2: ASCII text
回到顶部(go to top)

2. 从根目录/开始查找名为core的文件或目录,并将查找结果保存到/tmp/core.log 文件中

命令:

find / -name "core" -print | xargs  > /tmp/core.log

输出:

[root@localhost tmp]# ls
xmlXPathIniteihlTv.c  xmlXPathInitLrmz_p.c  xmlXPathInitpywFgf.c  xmlXPathInitv76QxM.c  yum_save_tx.2018-11-15.18-23.5nqJ3w.yumtx  yum_save_tx.2018-11-16.23-54.cMoa46.yumtx
[root@localhost tmp]# find / -name 'core' -print  |xargs   > /tmp/core.log
[root@localhost tmp]# ls
core.log  xmlXPathIniteihlTv.c  xmlXPathInitLrmz_p.c  xmlXPathInitpywFgf.c  xmlXPathInitv76QxM.c  yum_save_tx.2018-11-15.18-23.5nqJ3w.yumtx  yum_save_tx.2018-11-16.23-54.cMoa46.yumtx
[root@localhost tmp]# cat core.log
/dev/core /proc/sys/net/core /usr/lib/python2.7/site-packages/firewall/core /usr/lib/modules/3.10.0-693.el7.x86_64/kernel/drivers/infiniband/core /usr/lib/modules/3.10.0-693.el7.x86_64/kernel/drivers/memstick/core /usr/lib/modules/3.10.0-693.el7.x86_64/kernel/drivers/mmc/core /usr/lib/modules/3.10.0-693.el7.x86_64/kernel/drivers/net/ethernet/mellanox/mlx5/core /usr/lib/modules/3.10.0-693.el7.x86_64/kernel/drivers/usb/core /usr/lib/modules/3.10.0-693.el7.x86_64/kernel/net/core /usr/lib/modules/3.10.0-693.el7.x86_64/kernel/sound/core /usr/lib/modules/3.10.0-862.14.4.el7.x86_64/kernel/drivers/infiniband/core /usr/lib/modules/3.10.0-862.14.4.el7.x86_64/kernel/drivers/memstick/core /usr/lib/modules/3.10.0-862.14.4.el7.x86_64/kernel/drivers/mmc/core /usr/lib/modules/3.10.0-862.14.4.el7.x86_64/kernel/drivers/net/ethernet/mellanox/mlx5/core /usr/lib/modules/3.10.0-862.14.4.el7.x86_64/kernel/drivers/usb/core /usr/lib/modules/3.10.0-862.14.4.el7.x86_64/kernel/net/core /usr/lib/modules/3.10.0-862.14.4.el7.x86_64/kernel/sound/core

说明:

>
是定向输出到文件,如果文件不存在,就创建文件;如果文件存在,就将其清空;一般我们备份清理日志文件的时候,就是这种方法:先备份日志,再用>,将日志文件清空(文件大小变成0字节);

>>
这个是将输出内容追加到目标文件中。如果文件不存在,就创建文件;如果文件存在,则将新的内容追加到那个文件的末尾,该文件中的原有内容不受影响。
回到顶部(go to top)

3:从当前目录下开始查找其他用户具有读、写和执行权限的文件,并收回相应的写权限

命令:

find . -perm -7 -print | xargs chmod o-w

输出:

[root@localhost test]# ll
total 4
drwxr-xr-x. 2 root root 6 Nov 20 18:28 dir1
-rwxrwxrwx. 1 root root 0 Nov 20 18:28 log1
-rw-r--r--. 1 root root 4 Nov 20 18:29 log2
[root@localhost test]# find . -perm -7 -print | xargs chmod o-w
[root@localhost test]# ll
total 4
drwxr-xr-x. 2 root root 6 Nov 20 18:28 dir1
-rwxrwxr-x. 1 root root 0 Nov 20 18:28 log1
-rw-r--r--. 1 root root 4 Nov 20 18:29 log2

说明:
可以看到,执行命令前 log1文件,所属用户 所属组 其他用户均有读、写、执行权限,执行命令后,其他用户没有了写权限,其他权限都还在

回到顶部(go to top)

4. 用grep命令在从当前目录下开始查找类型为文件,且文件内容中含有hostname的文件

命令:

find . -type f -print | xargs grep "hostname"

输出:

[root@localhost test]# ls
dir1  log1  log2
[root@localhost test]# cat log1
[root@localhost test]# cat log2
我是log2
hostnamesina=sina.com 哈哈
第三行
[root@localhost test]# find . -type f -print | xargs grep "hostname"
./log2:hostnamesina=sina.com 哈哈

说明:
Linux grep命令用于查找文件里符合条件的字符串。

grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一行显示出来

回到顶部(go to top)

5. 从当前目录下开始查找名称中以log开头的文件或目录,并将其移动到dir1目录中

命令:

 find . -name 'log*' | xargs -i mv {} dir1

输出:

[root@localhost test]# ls
dir1   log1  log2
[root@localhost test]# find . -name 'log*' | xargs -i mv {} dir1
[root@localhost test]# ls
dir1
[root@localhost test]# cd dir1/
[root@localhost dir1]# ls
log1  log2

说明:
{} 花括号代表前面find查找出来的文件名。

回到顶部(go to top)

6. 从当前目录下开始查找名称中以log开头的文件或目录,并将其移动到当前目录的父级目录中,移动时,进行询问

命令:

find . -name "log*" | xargs -p -i mv {} ..

输出:

[root@localhost test]# ls
dir1
[root@localhost test]# cd dir1/
[root@localhost dir1]# ls
log1  log2  log3
[root@localhost dir1]# find . -name "log*" | xargs -p -i mv {} ..
mv ./log1 .. ?...y
mv ./log2 .. ?...y
mv ./log3 .. ?...n
[root@localhost dir1]# ls
log3
[root@localhost dir1]# cd ..
[root@localhost test]# ls
dir1  log1  log2

说明:

-p参数会提示让你确认是否执行后面的命令,y执行,n不执行。

回到顶部(go to top)

7.find后执行xargs提示xargs: argument line too long解决方法:

命令:

find . -type f -atime +0 -print0 | xargs -0 -l1 -t rm -f

输出:

[root@localhost dir1]#  find . -type f -atime +0 -print0 | xargs -0 -l1 -t rm -f
rm -f
[root@localhost  dir1]#

说明:

-l1  是指一次处理一个
-t   是指处理之前打印出的命令
-print 在每一个输出后会添加一个回车换行符,而-print0则不会。

转载于:https://www.cnblogs.com/wq-mr-almost/p/10320866.html

linux每日命令(23):find命令之xargs相关推荐

  1. Linux每日一命令学习系列总结

    Linux每日一命令学习系列 这里是罗列出最常用的命令组合,而不是一个个详细介绍每个参数的用法,适合当你面对linux的终端的时候,知道有哪些命令,可是不知道加啥组合参数有啥效果的时候使用. 具体的可 ...

  2. linux每日命令(31):tar命令

    阅读目录(Content) 一.命令格式 二. 命令功能 三. 命令参数 必要参数 选择参数 四. 常见解压.压缩命令 tar .gz .tar.gz 和 .tgz .bz2 .tar.bz2 .bz ...

  3. linux每日命令(27):chmod命令

    阅读目录(Content) 一. 命令格式: 二. 命令功能: 三. 命令参数: 权限代号: 权限范围: 1. 文字设定法: 2. 数字设定法 四. 使用实例: 1:增加文件所有用户组可执行权限 2: ...

  4. linux每日命令(26):Linux文件属性详解

    Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容.具体情况如下: 命令: ls -lih 输出: [root@loca ...

  5. 每日一个Linux命令之man命令

    每日一个Linux命令之man命令 一个Linux系统中可供使用的命令可能多达数千个,每个命令都有不同的功能和使用方法.对于使用者而言,我们可以记住常用命令的使用方式.那么,对于陌生的命令,我们该如何 ...

  6. 每日一个Linux命令之mv命令

    每日一个Linux命令之mv命令 mv命令是move的简写,我们首先来查看mv命令的man page,运行man mv,结果如下显示: MV(1)告诉我们mv命令是一个可以在shell中执行的命令,N ...

  7. 每天一个Linux命令(1):xargs

    点击上方"民工哥技术之路",选择"设为星标" 回复"1024"获取独家整理的学习资料! 命令简介 xargs可以将stdin中以空格或换行符 ...

  8. 每日一个Linux命令之ls命令

    每日一个Linux命令之ls命令 1. ls命令简介 2. 常见选项 1. ls命令简介 ls命令(list)可用于列出指定路径下的文件(Linux中一切皆文件,目录也是文件的一种),如果不指定路径, ...

  9. 每日一个Linux命令之chmod命令

    每日一个Linux命令之chmod命令 1. chmod命令简介 2. 利用chmod命令变更文件权限 1. chmod命令简介 查询chmod命令的man page,如下所示: 根据chmod命令的 ...

最新文章

  1. Python装饰器-装饰流程,执行顺序
  2. 计算机公共基础知识论文,计算机等级考试二级公共基础知识汇总.doc
  3. PaddlePaddle eval后报错terminate all the procs的解决方法
  4. 【每日算法Day 74】经典面试题:约瑟夫环,我敢打赌你一定不会最后一种方法!...
  5. err=etherbase address must be explicitly specified
  6. 英语测试听力材料软件,英语听力软件哪个好?来这里!
  7. 摄像头各参数的意义_详解:摄像头参数介绍说明
  8. HTMLCSS精华知识点——基础标签
  9. java todo fixme_Java中注释TODO和FIXME的作用
  10. 【Vue报错】This is probably not a problem with npm. There is likely additional logging output above
  11. 如何升级展锐RM500U模组的5GCPE固件
  12. c语言程序 强制关机程序,怎么用C或者C++编写一个电脑强制关机程序
  13. 神级操作丨用 Python 将微信热文转换成Word文档
  14. chunk和block 区别
  15. 33.0 haproxy
  16. buuctf wustctf2020_getshell_2 ret2shellcode
  17. USB ID 传输数据原理
  18. IDEA 如何自动导入(import)
  19. c#与html的区别,C# 静态变量与普通变量的区别
  20. pytorch训练第一个项目VOC2007分割

热门文章

  1. QThread、moveToThread用法详述
  2. matlab 画折线图(美化)
  3. Linux FTP搭建及其使用
  4. 通过在计算机系统隐藏一个会在启动,纯干货:2步打开win10隐藏高级启动,解决80%系统问题,值得收藏...
  5. 玩游戏4g计算机的内存不足,如何解决游戏崩溃和内存不足的问题?
  6. ubuntu22.04安装惠普激光打印机m30w记录
  7. 1366*768 显示屏模式造成远程桌面不能全屏显示
  8. hive:函数:日期函数:to_date(),year(),month(),day(),hour(),minute(),second(),weekofyear()日期转周
  9. 兼容各大浏览器导出Excel
  10. 捡到的苹果手机怎么解id锁_苹果手机换id通讯录怎么恢复?超详细教程,你值得拥有!...