博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
freebsd find命令使用参数和Sed命令xargs命令详解
阅读量:6193 次
发布时间:2019-06-21

本文共 5420 字,大约阅读时间需要 18 分钟。

格式: find [path...] [expression]

find / -name access_log 2>/dev/null 不显示错误信息
find /-amin n ##查找系统中最后N分钟访问的文件
find /-atime n ##查找系统中最后n*24小时访问的文件
find /-cmin n ##查找系统中最后N分钟被改变状态的文件
find /-ctime n ##查找系统中最后n*24小时被改变状态的文件
find /-empty ##查找系统中空白的文件,或空白的文件目录,或目录中没有子目录的文件夹
find /-false ##查找系统中总是错误的文件
find /-fstype type ##查找系统中存在于指定文件系统的文件,例如:ext2 .
find /-gid n ##查找系统中文件数字组 ID 为 n的文件
find /-group gname ##查找系统中文件属于gnam文件组,并且指定组和ID的文件
find / -mmin n # 查找在系统中最后n分钟里修改过的文件
find / -mtime n #查找在系统中最后24*n小时里修改过的文件
find / -nouser #查找在系统中属于作废用户的文件
find / -size nc #查找在系统中长度为n字节的文件
find / -size +nc #查找在系统中长度大于n字节的文件
find / -daystart ##测试系统从今天开始24小时以内的文件,用法类似-amin
find / -depth ##使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容
find / -follow ##遵循通配符链接方式查找; 另外,也可忽略通配符链接方式查询
find / -help ##显示命令摘要
find / -maxdepth levels ##在某个层次的目录中按照递减方法查找
find / -mount ##不在文件系统目录中查找, 用法类似 -xdev.
find / -noleaf ##禁止在非UNUX文件系统,MS-DOS系统,CD-ROM文件系统中进行最优化查找
find / -version ##打印版本数字
-exec command; ##查找并执行命令
-fprint file ##打印文件完整文件名
-fprint0 file ##打印文件完整文件名包括空的文件
-fprintf file format ##打印文件格式
-ok command; ##给用户命令执行操作,根据用户的Y 确认输入执行
-printf format ##打印文件格式
-ls ##打印同种文件格式的文件.
几个参数之间可以用-and,-or连接,某个参数取反可用!.

第二种

一、Find 命令详解

命令格式:
find pathname -options 【-print -exec -ok】
   pathname find 命令所查找的目录路径;
   -print   将匹配的文件输出到标准输出;
   -exec   对匹配的文件执行该参数所给的shell命令,命令格式给‘command’ {} \;{}和\;之间有空格;
   -ok   和-exec的作用相同,只是以更安全的模式来执行参数,但执行每个命令前都会给用户提示是否执行;
   -options 命令参数
     -name 按照文件名查找文件;
     -perm 按照文件权限查找文件;
     -prune 使用该命令使find命令不在当前指定目录中查找,如果同时使用-depth选项,它将被find忽略;
     -user 按照文件属主查找;
     -group 按文件属组查找;
     -mtime -n +n 按照文件的更改时间查找,-n表示文件更改时间距现在n天以内,
                                         +n表示文件更改时间距现在n天以前;
     -nogroup 查找无有效所属组的文件,即该文件所属的组不在/etc/group
     -nouser 查找无有效属主的文件,即该文件所在的主不在/etc/passwd;
     -newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件;
   -type 查找某一类型的文件
     b 块设备文件
     d 目录
     c 字符设备文件
     p 管道文教案
     l 符号链接文件
     f 普通文件
实例:1、使用ls -l命令列出所匹配到的文件
    #find 。 -type f -exec ls -l {} \;
    2、删除/logs目录中更改时间在5日以前的文件
    #find logs -type f -mtime +5 -exec rm {} \;
    该命令在执行的时候直接删除匹配的文件,安全性不高;
    #find logs -type f -mtime +5 -exec -ok rm {} \;
    该命令在执行的时候会提示用户是否要删除该文件,按Y删除文件,N不删除该文件。
    3、使用find命令查找passed文件中是否包含user1用户;
    #find /etc -name “passwd*” -exec grep “user1” {} \;
    4、查找当前目录中文件属主有读写权限,并且属组和其他用户有读权限;
      #find . -type f -perm 644 -exec ls -l {} \;
    5、查找系统中所有文件长度为0的不同文件,并列出它的路径;
      #find / -type f -size 0 -exec ls -l {} \;
    6、查找当前文件系统中所有目录并排序;
      # find . -type d |sort
    7、删除当前目录中访问时间在7天以前的文件,并且含有三个数字后缀的log文件
      #find . -name “admin.log[0-9][0-9][0-9]” -atime -7 -ok rm {} \;
二、xargs命令详解
     在使用find的命令时-exec选项处理匹配文件的信息,但是有些系统文件对exec的命令长度有限制,
   在运行命令几分钟后,可能出现溢出错误信息,通常的错误信息为“参数列太长”或“参数列溢出”,这时候用sargs
   就可以解决该问题。
    find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,这样就可以处理
   最先获取的一部分文件,然后是剩余的并继续下去。
实例:1、查找系统中的每个普通文件,然后用xargs命令测试它们分别属于那类文件;
    #find . -type f -print | xargs file
    2、把内存信息转储问(core dump),然后把结果保存到/tmp/core.log文件中;
      #find / -name “core” -print | xargs echo “” >/tmp/core.log
    3、查找当前目录下所有用户具有读、写和执行权限的文件,并收回其他用户的写权限;
      #find . -perm -7 -print | xargs chmod o-w;
    4、搜索当前目录下所有普通文件中包含hostname的字符;
     #find . -type f -print | xargs grep “hostname”或
     #find . -name \* -type f -print | xargs grep “hostname”
    5、查找/apps目录下的文件,但不查找/apps/bin目录下查找;
     #find /apps -path “/apps/bin” -prune -o -print
三、sed命令详解
     sed用法 sed是一个非交互性文本流编辑器,它编辑文件或标准输入导出的文件拷贝。可以在命令行输入sed命令,
也可以在一个文件中写入命令,在使用sed时,sed并不于初始化文件打叫道,它操作的只是一个拷贝,然后所有的改动
如果没有重定向到一个文件,将输出到屏幕。因为sed是一个非交互性编辑器,必须通过行号或正规表达式指定要改变
的文本行。
1、sed怎么读取数据:sed从文件的一个文本行或从标准输入的几种格式中读取数据,将之拷贝到一个编辑缓冲区,然后
读命令行或脚本的第一命令,并使用这些命令查找模式或定位行号编辑它,重复此过程命令结束。
2、调用sed:调用sed有三种方式在命令行键入命令;将sed命令插入脚本文件,然后调用sed;将sed命令插入脚本文件,
并使sed脚本可执行。
    2.1sed命令格式:
    sed [选项] sed命令输入文件         【命令行在使用sed时,实际命令要加单引号。sed也允许加双引号】
    sed [选项] -f sed脚本文件输入文件
    sed选项如下:
     n 不打印   【sed不编辑行到标准输出,缺省为打印所有的行】
     p 命令可以用来打印编辑行
     c 下一命令是编辑命令,使用多项编辑时加入此选项,如果只用到一条sed命令,此选项无用,但指定它也没有关系
     f 如果正在sed脚本文件,使用此选项,此选项通知sed一个脚本文件支持所有的sed命令
      sed -f myscript.sed input_file    【myscript.sed即为支持sed命令的文件】
    2.2保存sed输出
    由于不接触初始化文件,如果想要保存改动内容,简单地将所有输出重定向到一个文件即可,例如:
    #sed ’some-sed-commands‘ input-file >myoutfile
    2.3使用sed在文件中查询文本的方式
    sed浏览输入文件时,缺省从第一行开始,有两种方式定位文本
      1.使用行号,可以是一个简单数字或一个行号范围
      2.使用正规表达式
     使用sed定位文本的一些方式:
      x (x为行号,如1
      x,y (表示行号范围从x到y行,如2,5表示从第2行到第5行
      /pattern/ (查询包含模式的行。如/disk/或/[a-z]/
      /pattern/pattern/ (查询包含两个模式的行,例如/disk/disks/
      /pattern/ ,x (在给定行号上查询包含模式的行。例如/ribbon/,3
      x,/pattern/    (通过行号或模式查询匹配行。例如3,/vcd/
      x,y!查询不包含指定行号x和y的行。例如1,2!
   2.4基本sed编辑命令
      p 打印匹配行
      = 显示文件行号
      a\ 在定位行号后附加新文本信息
      i\ 在定位行号后插入新文本信息
        d 删除定位行
      c\ 用新文本替换定位文本
      s 使用替换模式替换相应模式
      r 冲另一个文件中读取文件
      w 写文本到一个文件
      q 第一个模式匹配完成后推出或立即推出
      | 显示与八进制ASCII代码等价的控制字符
      {} 在定位执行的命令组
      n 从另一个文件中读文本下一行,并附加在下一行
      g 将模式2粘贴/pattern n/
      y 传送字符
      n 延续到下一输入行;允许跨行的模式匹配语句。
    sed识别任何基本正规表达式和模式及其匹配规则,如果要定位一特殊字符,必须使用(\)屏蔽其特殊含义
   例如:1.打印第2行
     #sed -n ‘2p’ temp.txt
     2.打印指定范围,打印1到3行,用逗号分割符号
     #sed -n ‘1,3p’ temp.txt
     3.使用行号和模式结合使用,显示temp.txt最后一行中的单词the,
     # sed -n ‘/the/p’ temp.txt
     4.使用模式与行号的混合方式剔除第一行,和格式为line_number,/pattern/。都好用来分隔行号
     与模式开始部分,为了达到预期结果,使用4,/the/。意思只在第四行查询模式the。
     #sed -n ‘4,/the/p’ temp.txt
     5.匹配元字符$前,必须使用反斜杠\屏蔽特殊含义。模式为/\$/p
     #sed -n ‘/\$/p’ temp.txt
     6.显示整个文件,只需将行号范围设为第一行到最后一行1,$。$意为最后一行。
     #sed -n ‘1,$P’ temp.txt
     7.显示任意字符,匹配任意字符,后跟任意字符的0次或多次重复,并以ing结尾
      #sed -n ‘/.*ing/p’ temp.txt
     8.打印匹配的的字符并显示该行行号
      #sed -e ‘/music/=’ temp.txt
     9.在匹配的字符串后插入新的字符串,使用附加操作即使位置,a\,a\通知sed这是一个附加操作
      #sed “/abcd/a\ABCD” temp.txt
     10.替换文本 替换命令用替换模式指定模式,格式为
     [address[,address]] s/pattern-to-find/replacerment-pattern/[gpwn]
     s选项通知sed这是一个替换操作,并查询pattern-to-find,成功后replacement-pattern替换它。
       g: 缺省情况下只替换第一次出现模式,使用g选项替换全局所有出现模式。
       p: 缺省sed将所有被替换写入标准输出,加p选项将使-n选项无效;
       n: 不打印输出结果;
       w: 文件名使用此选项将输出定向到一个文件
     例如:替换night为NIGHT,首先查询night,然后用文本NIGHT替换它
      #sed ‘s/night/NIGHT/’ temp.txt

转载

sed命令详解

 

你可能感兴趣的文章
公司框架遇到的问题
查看>>
详解 Discuz 的 PHP经典加密解密函数 authcode
查看>>
Mysql XX 天之内
查看>>
AE创建气泡式的提示框(VB.Net和C#源码)
查看>>
Oracle如何删除表中重复记录
查看>>
Application Bar
查看>>
nginx 是如何处理访问请求的
查看>>
wget参数用法详解
查看>>
安卓自学应用程序生命周期法
查看>>
【COCOS2D-X(1.X 2.X)】Json(cpp版)以及添加自定义字体库教程
查看>>
使用curl命令查看访问url的时间
查看>>
whois
查看>>
python添加环境变量
查看>>
Linux 新手容易犯的 7 个错误
查看>>
spoj3105 MOD - Power Modulo Inverted(exbsgs)
查看>>
DP-01背包 (题)
查看>>
WinForm中跨线程操作控件
查看>>
CODING 敏捷实践完全指南
查看>>
unittest测试框架和测试报告的输出实例(一)
查看>>
PYTHON-字符编码
查看>>