中午有个同事要使用find来查找删除文件,之前也查过不少次,这次把常用的功能记录下来,少做重复功。具体详细的可以参考man和《Linux文件查找命令find,xargs详述》。
一、find命令的格式
1.find命令一般格式
find pathname -options [-print -exec -ok ...]
2.exec和ok命令区别
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {} \;,注意{}和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个\,最后是一个分号。
二、应用场景
1.在/logs目录中查找更改时间在5日以前的文件并删除它们:
$ find logs -type f -mtime +5 -exec rm {} \;
注意:删除一定要小心,要先用ls或-print查看是否是要删的文件。
2.find文件后在文件的集合中查找文件内容:
# find /etc -name "passwd*" -exec grep "sam" {} \;
sam:x:501:501::/usr/sam:/bin/bash
3.让当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件;
$ find . -type f -perm 644 -exec ls -l {} \;
-perm mode:文件许可正好符合mode
-perm +mode:文件许可部分符合mode
-perm -mode: 文件许可完全符合mode
4、find命令将删除当目录中访问时间在7日以来、含有数字后缀的admin.log文件。
该命令只检查三位数字,所以相应文件的后缀不要超过999。先建几个admin.log*的文件 ,才能使用下面这个命令
$ find . -name "admin.log[0-9][0-9][0-9]" -atime -7 -ok rm {} \;
< rm ... ./admin.log001 > ? n
< rm ... ./admin.log002 > ? n
< rm ... ./admin.log042 > ? n
< rm ... ./admin.log942 > ? n
5.查找有执行权限的文件(读写可能有也可能没有)
$find . -perm +001
6.查找所有大于1M的文件
$find . -size +10000000c
7.在当前目录查找,不进入子文件夹
find . -maxdepth 1 -name “*.c”
8.使用正则表达式
# find . -regex ‘[a-z]+\.c′
9.在当前目录查找,但不进入某些目录下
$ find /apps -path "/apps/bin" -prune -o -print
find /usr/sam -path "/usr/sam/dir1" -prune -o -print
find [-path ..] [expression] 在路径列表的后面的是表达式
find /usr/sam \( -path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -print
三、xargs
xargs - build and execute command lines from standard input
在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。
而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。
xargs使用例子
#find . -name "file*" -print | xargs echo "" > /temp/core.log
# cat /temp/core.log
./file6
用grep命令在所有的普通文件中搜索hostname这个词
# find . -type f -print | xargs grep "hostname"
./httpd1.conf:# different IP addresses or hostnames and have them handled by the
./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnameson your
$ ls | xargs-t -i mv {} {}.bak
-i 选项告诉xargs 用每项的名称替换 {}。
-t是在执行之前把错误信息打印到标准输出。
grep 使用
1.使用正则表达式
grep -E "^#include" *.c
2.只显示文件名
grep -1 "#include <sys/ipc.h>" *.c
3.显示匹配上下n行
grep -2 "#include <sys/ipc.h>" *.c
相关的:
grep -B 2 "#include <sys/ipc.h>" *.c
grep -B 2 "#include <sys/ipc.h>" *.c
4.只显示匹配内容(不显示文件名)
grep -h "#include <sys/ipc.h>" *.c
分享到:
相关推荐
find命令使用方法,描述了find命令的各種使用方法.
本文教大家一个Linux find 命令使用的小技巧,感性趣的朋友可以参考下。
Linux中的find命令使用时的一些注意点整理.docx
仿照unix操作系统中的find命令,在实现一个myfind命令。myfind命令从指定的目录下开始,递归地查找指定文件
This manual page documents the GNU version of find. GNU find searches the directory tree rooted at each given file name by evaluating the given expression from left to right, according to the rules of...
详细解析
find命令和xargs命令配合使用,自己总结的,觉得还好
Linux中Find命令的使用
使用find命令查找Linux中的隐藏文件的方法.docx
linux 下 find 命令的用法
运用tasklist和find命令来检测进程是否存在
在这篇文章中,我们将学习如何使用 find 命令以及它所提供的选项来查找文件。 在绝大多数Linux发行版中,你都可以直接使用 find 命令而无需进行任何安装操作。如果你想在linux系统的命令行中变得特别高效,那么 find...
UNIX find命令的使用,包括各种参数及操作
帮助您轻松工作及管理你的Linux系统 没什么好说的,想学就下。
1、find命令的一般形式为; 2、find命令的参数; 3、find命令选项; 4、使用exec或ok来执行shell命令; 二、find命令的例子; 1、查找当前用户主目录下的所有文件; 2、为了在当前目录中文件属主具有读、写权限,...
linux find 命令大全面linux find 命令大全
find如不加任何参数,表示查找当前路径下的所有文件和目录,如果服务器负载比较高尽量不要在高峰期使用find命令,find命令模糊搜索还是比较消耗系统资源的。 语法格式:find [参数] [路径] [查找和搜索范围] 常用...
linux常用的find命令整理,希望对初学者有帮助!
find命令详解,详细说明了find命令中的每个参数,并带有实例
AIX命令介绍篇-find-命令实例讲解.doc