Linux命令(三)find,xargs |
您所在的位置:网站首页 › 破组四字词语有哪些 › Linux命令(三)find,xargs |
本篇记录2个命令,分别是:find,xargs 1.find作用: 按文件结构遍历搜素,找到符合条件的文件并按照相应的操作来展现 格式: find option [expression]默认路径是在当前目录,打印信息用-print expression包含几个因素:操作,操作数,测试表达式,动作 parameterfunction-name按名称寻找文件-exec找到文件后再执行exec命令后面的操作-type按类型查找文件-print输出找到的文件的信息-user按所有者(文件的主人)来查找文件-mtime -n +n根据修改时间找到文件 1.1按普通的条件查找使用例子: 1.打印当前路径下的文件的信息,只打印前十条 find . -print |head -102.打印当前路径下以.txt结尾的文件的信息 find . -name "*.txt" -print |head -10这里不用type,因为type是关于帮助文件,可执行文件之类的定义的,跟pdf,txt这种文件类型不一样,在详细信息中可以找到 3.打印当前路径下以.txt结尾或者以.pdf的文件的信息 find . \ (-name "*.txt" -or -name "*.pdf" \)4.打印当前路径下除了以.txt结尾的文件的信息 find . ! -name "*.txt" -print |head -10-print可以不要,结果一样的 查找普通文件 补充知识: 关于文件的类型如下: parameterfunction-f普通文件-lsymbolic link file符号链接文件-ddirectory 目录6.按修改时间查找文件,超找48小时内修改过的文件 find -atime -27.按照目录和文件权限来查找文件,查找/home/ling目录下 权限为 777的文件 find /home/ling -perm 7778.打印当前目录下所有以txt结尾的符号链接文件 find . -type l -name "*.txt"8.打印当前目录下所有以php结尾的,权限是777的普通文件 find . -type f -name "*.php" -perm 7779.打印当前目录下所有root持有的文件 find . -type f -user root10.打印当前目录下所有权限不是777也不是644的普通文件 find . -type f \(!-perm 777 -and !-perm 644\)注意777不可写成"777" (待完成:准备文件时,修改权限无效的解决办法) 1.2 查找后执行命令 -exec1.ls -l命令放在find命令的-exec选项中 find . -exec ls -l {}\;2.在目录中查找更改时间在2日以前的文件并删除它们 find . -type f-mtime +2 -exec rm {}\;**备注:**2天以内的用-2 3.在目录中查找更改时间在2日以前的文件并删除它们,在删除之前先给出提示 find . -etime -2 -ok -i {}\;-ok是-exec的安全模式,每次执行前都会提示 4.-exec中使用grep命令,先匹配所有文件名为“ passwd*”的文件,例如passwd、 passwd.old、passwd.bak,然后执行grep命令看看在这些文件中是否存在一个root用户 find . -name "passwd*" -exec grep "root" {}\;5.查找文件移动到指定目录home/ling find . -exec mv {} home/ling\;6.用exec选项执行cp命令 find . -name "*.log" -exec cp {} home/ling \;7.将所有.c文件中的代码合并到all.c find . -name "*.c" -exec cat {} \;> all.c\;注意指令和其他符号之间要有间隔,比如cat 和{}之间,不然就会被识别成一串的 8.当命令行较多时可以将exec脚本放入文件,然后执行文件。请写出找到当前所有的.c文件后,打印第一个文件,并将它合并到all.c,打印并合并的操作放到当前目录下command.sh的文件里的操作 find . -name "*.c"-exec |commmand.sh\;command.sh的内容: #! /bin/sh ls -l $1 cat $1第一行是sh文件开头必须写的,用来告诉系统需要什么程序执行 $1代表第一行 2.xargs作用: 在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。 格式: xargs [option] parameterfunctionn一行最多打印几个字d寻找分割符,相当于java String 类里的split()使用例子: 1.将a.tx里的好几行内容变成一行 文件a.txt里的内容: 1 2 3 4 5 6 7 8 9 cat a.txt | xargs结果: 2.将一行变成n行 5.在当前目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限 find . -perm -7 -print | xargs chmod o-w使用-i参数默认的前面输出用{}代替,-I参数可以指定其他代替字符,如例子中的[] 6.用grep命令在所有的普通文件中搜索hostname这个词 find . -name \* -type f -print | xargs grep "hostnames"\是表示转义,用来取消find命令中的*在shell中的特殊含义 7.使用xargs执行mv find . -name "*.log" | xargs -i mv {} test4使用-i参数默认的前面输出用{}代替,-I参数可以指定其他代替字符,如下面例子中的[] find . -name "file" | xargs -I [] cp [] .. |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |