shell编程中的find命令

find命令的完整语法格式如下所示:

find  [path]  [options]  [tests]  [actions]

  1. path

    path部分很容易理解:既可以使用绝对路径,如/bin,也可以使用相对路径,如 . 。如果需要,也可以指定多个路径,如 find /var  /home。

  2. options

    find命令有许多选项可用,下表列出几个最常用的选项。

    选项 含义
    -depth        在查看目录本身之前先搜索目录的内容
    -follow 跟随符号链接
    -maxdepths N                                     最多搜索N层目录
    -mount(或者-xdev)                                  不搜索其他文件系统的中的目录(比如装的是windows和linux双系统,采用这个选项即可略过对windows系统下磁盘的查找)
  3. tests

    测试部分,可以提供给find命令的测试非常多,每种测试返回的结果有两种可能:true 或 false。find 命令开始工作时,它按照顺序将定义的每种测试一次应用到它搜索到的每个文件上。如果一个测试返回 false,find 命令就停止处理它当前找到的这个文件,并继续搜索。如果一个测试返回 true,find 命令将继续下一个测试或对它当前文件采取行动(actions)。下表列出了常用的测试。

    测试 含义
    -atime  N                           文件在N天之前被最后访问过
    -mtime  N 文件在N天之后最后被修改过
    -name  pattern                       文件名(不包括路径名)匹配提供的模式pattern,为了确保pattern被传递给 find 命令而不是由shell来处理,pattern必须总是用双引号括起
    -newer otherfile                         文件比otherfile文件要新
    -type c 文件的类型为c,c是一个特殊类型。最常见的是d(目录)和f(普通文件)。其他可用的类型可参考手册页。
    -user username                               文件的拥有者是指定的用户username

    在shell脚本编程中,还可以用操作符来组合测试。大多数操作符有两种格式:短格式和长格式。见下表:

    操作符,短格式 操作符,长格式 含义
    ! -not 测试取反
    -a -and 两个测试都必须为真
    -o -or 两个测试有一个必须为真

    也可以通过使用圆括号来强制测试和操作符的优先级。由于圆括号对shell来说有其特殊的含义,所以还必须使用反斜线来引用圆括号。此外,如果在文件名处使用的匹配模式,就必须在模式上使用引号以确保模式没有被shell扩展,而是直接传递给find命令。例如,如果想写一个测试“搜索的文件比文件X要新,或者文件名以下划线开头”,可以这样写:

    \(-newer X -o -name "_*" \)
  4. actions

    现在可以可靠地搜索文件了。下面看看在发现匹配指定条件的文件之后,可以执行的动作。下表给出了几个常见的动作。

    动作 含义
    -exec command      执行一条命令,这是最常见的动作之一。这个动作必须使用 \; (斜杠分号)字符对来结束。
    -ok command 与-exec类似,但它在执行命令之前会针对每个要处理的文件,提示用户进行确认。这个动作必须使用 \; 字符对来结束。
    -print 打印文件名
    -ls 对当前文件使用命令 ls-dils

    -exec和-ok命令将命令行上后续的参数作为它们参数的一部分,知道被\;序列终止。实际上,-exec和-ok命令执行的是一个嵌入式命令,所以嵌入式命令必须以一个转义的分号结束,使得find命令可以决定什么时候它可以继续查找用于它自己的命令行选项。

时间: 2024-10-05 11:48:18

shell编程中的find命令的相关文章

shell编程中for/while循环命令

一.for命令 在shell编程中,有时我们需要重复执行一直命令直至达到某个特定的条件,bash shell中,提供了for命令,允许你创建一个遍历一系列值的循环,每次迭代都通过一个该系列中的值执行一组预定义的命令. for的基本格式: for var in list do commands done 在list中,你提供了迭代中要用的一系列值.在每个迭代中,变量var包含列表中的当前值,第一个迭代会适用列表中的第一个值,第二个迭代使用第二个值,以此类推,直至列表中的所有值都过一遍. 1.1读取

shell编程中for,while,util,case,select,break, continue用法详解

关于shell脚本的更多详细实例讲解请参考:http://www.cnblogs.com/yuexiaxiaoxi/category/646749.html Shell编程中循环命令用于特定条件下决定某些语句重复执行的控制方式,有三种常用的循环语句:for.while和until.while循环和for循环属于"当型循环",而until属于"直到型循环".循环控制符:break和continue控制流程转向. 参考:<Linux 与unix shell 编程指

[ SHELL编程 ] shell编程中数值计算方法实例

SHELL编程中经常会涉及到数值的相关计算,有时候对于这些计算命令的时候场景容易忘记或者混淆,这里针对常用的计算做一个总结.主要包括let.bc.expr.(())等. 1.let 使用格式:let 表达式,表达式必须是完整的表达式,即等号两边.只能赋值,不支持浮点数运算,不支持直接输出 $ var=10 $ let var+=2 #var=12,中间不能有空格 $ let var=var+2 #var=14 $ let var*=2 #var=28 $ let var/=2 # var=14

shell编程中常用的比较操作符

在任何程式的编写中都离不开条件判断语句,shell编程中也是如此,这里整理了一些在shell的test命令中经常使用的比较操作符,主要分为数值比较.字符串比较和文件比较. 数值比较: n1 -eq n2 检查n1是否等n2 n1 -ge n2 检查n1是否大于或等于n2 n1 -gt n2 检查n1是否大于n2 n1 -le n2 检查n1是否小于或等于n2 n1 -lt n2 检查n1是否小于n2 n1 -ne n2 检查n1是否不等于n2 字符串比较: str1 = str2 检查str1是

shell编程中的条件判断(shell 05)

shell编程中的条件判断条件if-thencase if-then单条件if commandthen commandsfi当command返回码为0时 条件成立 if.sh #! /bin/bash if date then echo "command exec" fi if date123 then echo "command exec1" fi echo "out if" [[email protected] sh]# ./if.sh 20

Shell编程中Shift的用法

Shell编程中Shift的用法 Bash中,数组变量的赋值有两种方法: (1) name = (value1 ... valuen) 此时下标从0开始 (2) name[index] = value 下面以一个简单的脚本来说明,脚本内容如下: #!/bin/sh until [ $# -eq 0 ] do echo "第一个参数为: $1 参数个数为: $#" shift done 执行以上程序x_shift.sh: [[email protected] test]# ./test

(转)轻松掌握shell编程中数组的常见用法及示例

缘起:在老男孩进行linux培训shell编程教学中,发现不少水平不错的网友及同学对数组仍然很迷糊,下面就给大家分享下数组的用法小例子,希望能给大家一点帮助.其实SHELL的数组很简单,好用.我们学习都应该遵循简单.易用的原则. shell编程中数组的简单用法及示例 新版本的Bash支持一维数组. 数组元素可以使用符号variable[xx]等方式来初始化. 另外, 脚本可以使用declare -a variable语句来指定一个数组等.要引用一个数组元素(也就是取值), 可以使用大括号, 访问

shell脚本中常用的命令:wget、curl、ss、lsof、nmap、nc、netstat、telnet

shell脚本中常用的命令:wget.curl.ss.lsof.nmap.nc.netstat.telnet 实验环境说明: (1)远程nginx服务器IP:192.169.5.136,nginx服务使用的端口是80: (2)本地ceshiji的IP: 192.169.5.121 在服务器本地监控服务端口常见命令:netstat.ss.lsof(简称三'S') 举例说明常用命令的选项: (1)[[email protected] ~]# netstat -lnp |grep nginx tcp

shell编程中的字符串的截取方法

shell编程中的字符串的截取方法: 一.Gnu Linux shell 截取字符变量的前8位,有方法如下: 1.expr substr "$a" 1 8 2.echo $a|awk '{print substr(,1,8)}' 3.echo $a|cut -c1-8 4.echo $ 5.expr $a : '\(.\\).*' 6.echo $a|dd bs=1 count=8 2>/dev/null 二.按指定的字符串截取 1.第一种方法: ${varible##*stri