find和xargs组合

  • find用法

find path -option

  • 选项
选项 功能
-name filename 查找文件名为filename的文件
-perm 777 按权限来查找
-user 按文件属主来查找
-group 按文件属组来查找
-mtime -n/+n 按文件更改时间来查找文件,-n指n天以内,+n指那天以前
-atime 按文件访问时间来查
-ctime 按文件创建时间来查
-nogroup 查无有效属组的文件,即文件属组在/etc/groups里不存在
-nouser 查无有效属主的文件,即文件属主在/etc/passwd里不存在
-newer f1 !f2 查更改时间比f1新但比f2旧的文件
-type b/d/c/p/l/f 查看块设备、目录、字符设备、管道、符号链接、普通文件
-size 查看长度为n块的文件
-depth 使查找在进入子目录前先行查找完本目录
-fstype 查位于某一类型文件系统中的文件,这些文件系统类型通常可在/etc/fstab中找到
-mount 查文件时不跨越文件系统mount点
  • 查看目录下所有文件并判断文件类型
[[email protected] ~]# find . -type f|xargs file       
./.bash_profile:      ASCII English text
./install.log:        ASCII text
./anaconda-ks.cfg:    ASCII English text
./.bash_history:      ASCII text, with very long lines
./install.log.syslog: ASCII text
  • 在整个系统中查找内存信息转储文件(core dump) ,然后把结果保存到/tmp/core.log 文件中
[[email protected] ~]# find / -name "core" |xargs echo "" >/tmp/core.log
  • 在当前目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限

模拟环境:

[[email protected] test]# for n in `seq 9`;do touch log000$n.log;done 
[[email protected] test]# for n in `seq 4 9`;do chmod 777 log000$n.log;done      
[[email protected] test]# ll
total 0
-rw-r--r-- 1 root root 0 Oct 27 15:52 log0001.log
-rw-r--r-- 1 root root 0 Oct 27 15:52 log0002.log
-rw-r--r-- 1 root root 0 Oct 27 15:52 log0003.log
-rwxrwxrwx 1 root root 0 Oct 27 15:52 log0004.log
-rwxrwxrwx 1 root root 0 Oct 27 15:52 log0005.log
-rwxrwxrwx 1 root root 0 Oct 27 15:52 log0006.log
-rwxrwxrwx 1 root root 0 Oct 27 15:52 log0007.log
-rwxrwxrwx 1 root root 0 Oct 27 15:52 log0008.log
-rwxrwxrwx 1 root root 0 Oct 27 15:52 log0009.log

执行命令和结果:

[[email protected] test]# find . -perm -7|xargs chmod o-w
[[email protected] test]# ll
total 0
-rw-r--r-- 1 root root 0 Oct 27 15:52 log0001.log
-rw-r--r-- 1 root root 0 Oct 27 15:52 log0002.log
-rw-r--r-- 1 root root 0 Oct 27 15:52 log0003.log
-rwxrwxr-x 1 root root 0 Oct 27 15:52 log0004.log
-rwxrwxr-x 1 root root 0 Oct 27 15:52 log0005.log
-rwxrwxr-x 1 root root 0 Oct 27 15:52 log0006.log
-rwxrwxr-x 1 root root 0 Oct 27 15:52 log0007.log
-rwxrwxr-x 1 root root 0 Oct 27 15:52 log0008.log
-rwxrwxr-x 1 root root 0 Oct 27 15:52 log0009.log
  • find . -type f|xargs grep ‘hostname‘
  • xargs和mv
[[email protected] test]# ll
total 4
-rw-r--r-- 1 root root    0 Oct 27 15:52 log0001.log
-rw-r--r-- 1 root root    0 Oct 27 15:52 log0002.log
-rw-r--r-- 1 root root    0 Oct 27 15:52 log0003.log
-rwxrwxr-x 1 root root    0 Oct 27 15:52 log0004.log
-rwxrwxr-x 1 root root    0 Oct 27 15:52 log0005.log
-rwxrwxr-x 1 root root    0 Oct 27 15:52 log0006.log
-rwxrwxr-x 1 root root    0 Oct 27 15:52 log0007.log
-rwxrwxr-x 1 root root    0 Oct 27 15:52 log0008.log
-rwxrwxr-x 1 root root    0 Oct 27 15:52 log0009.log
drwxr-xr-x 2 root root 4096 Oct 27 16:06 logs
[[email protected] test]# find . -perm 644|xargs -i mv {} logs
[[email protected] test]# tree
.
├── log0004.log
├── log0005.log
├── log0006.log
├── log0007.log
├── log0008.log
├── log0009.log
└── logs
    ├── log0001.log
    ├── log0002.log
    └── log0003.log

1 directory, 9 files

使用-i参数默认的前面输出用{}代替


时间: 2024-10-12 16:37:15

find和xargs组合的相关文章

LINUX SHELL脚本攻略笔记[速查]

Linux Shell脚本攻略笔记[速查] 资源 shell script run shell script echo printf 环境变量和变量 pgrep shell数学运算 命令状态 文件描述符和重定向 cat 数组和关联数组 alias date 调试脚本 函数和参数 管道 读取命令输出 read 字段分隔符和迭代器 循环 比较和测试 find xargs tr md5sum sha1sum 对目录进行校验 sort uniq tempfile split bash变量匹配切分 exp

shell脚本基础入门(二)

以下为本教程的<入门篇>,适于初学者快速入门以及老手查缺补漏. 第一招 HelloWorld 第一式:echo echo "Hello World" echo -n "Hello World" # 不带换行 echo -e '\e[0;33;1mHello\e[0m World' # 带颜色的玩法 echo -e '\e[0;33;4mHello\e[0m World' # 带颜色+下划线 echo -e '\e[0;33;5mHello\e[0m Wo

查找文件并执行的shell命令

来由 经常我们需要找到某类文件, 并对进行处理. 例如找到.svn文件夹, 然后删除掉. 如果不使用shell,你可以选择手动删除, 前提是没有几个此类文件, 但是svn信息文件很多, 不能采用手动删除, 或者逐个命令删除. 由此引入shell来解决此问题. 方法1 find –exec 选项 NAME       find - search for files in a directory hierarchy SYNOPSIS       find [-H] [-L] [-P] [-D deb

linux find 命令用法整理

find path -option [ -print ] [ -exec -ok command ] {} \; path: find命令所查找的目录路径.例如用.来表示当前目录,用/来表示系统根目录.-print 将查找到的文件输出到标准输出-exec command {} \; 将查到的文件执行command操作,{} 和 \;之间有空格:{}标识匹配到的文件路径或文件名-ok 和-exec相同,只不过在操作前要询用户===========================  option  

Shell常用招式大全之入门篇

本文为shell的一个系列教程,分为入门篇.命令篇.实战篇 教程里尽量减少复杂的文字描述,不求全,但求精,以实例为主,目标是让读者快速上手shell. 以下为本教程的第一部分<入门篇>,欢迎读者拍砖及找BUG,后续会根据反馈进行修改及补充. CSDN的Markdown生成的目录显示符号有一点小问题,大家以详细内容中的标题为准. 入门篇 第一招 HelloWorld 第一式echo 第二招 判断 第一式if 判断原理 第二式test 和 文件测试 字符串比较 整数比较 第三式 第三招循环 第一式

linux学习笔记3.0

命令service network restart 重启网络systemctl network restartsystemctl restart sshname="value" 变量赋值$(1.../@/*/#/0/?/$) 位置变量test EXPRESSION 测试命令export 设置全局变量readonly name 设置只读变量env.printenv.export.declare -x 查看全局变量shift 左移参数let 算数运算read 接收输入locate 查询系统

Linux:只复制文件权限和所有者

在Linux上,怎么把一个文件的<权限和所有者>赋给另一个文件呢? chown命令可以设置所有者和用户组:chmod可以设置文件的权限.这两个命令都支持使用另一个文件做为引用(RFILE). 复制一个文件/目录权限到另一个文件 语法如下: 1 2 chmod --reference=RRFILE FILE chmod [options] --reference=RRFILE FILE RRFILE替换为你要使用的权限文件,例: 把文件a的权限赋给文件b. 你还可以指定多个文件: 1 $ chm

linux下xargs命令用法详解 【转】

xargs在linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活.xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.由此 这个命令也是后置引用的一个强有力的替换.在一般使用过多参数的命令替换失败的时候,用xargs来替换它一般都能成功.通常情况下,xargs从管道或 者stdin中读取数据,但是它也能够从文件的输出中读取数据.xargs的默认命令是echo.这意味着通过管道传递给xargs的输入将

【转】【Linux】linux下xargs命令

xargs命令当前位置:首页 ? 软件·打印·开发·工具 ? xargs xargs命令常用工具命令 xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具.它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数.xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行.xargs的默认命令是echo,空格是默认定界符.这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换