15个极好的Linux find命令示例
linux的find用法
linux的find用法Linux中的find命令是一个非常强大的工具,用于在文件系统中文件和目录。
它可以根据不同的条件来查找文件,比如按名称、大小、权限等。
以下是find命令的用法及其参数解析。
基本用法:find 命令的基本语法是:find [path] [expression]path:指定要的路径。
expression:指定要应用的表达式。
例如,要在当前目录中查找所有的文件,可以使用以下命令:find . -type f这将递归地当前目录下的所有文件,并打印出它们的路径。
find 命令的参数:1. -name:按名称查找文件。
例如,要在当前目录中查找名为app.log的文件,可以使用以下命令:find . -name app.log2. -type:按类型查找文件。
-type f:查找普通文件。
-type d:查找目录。
-type l:查找符号链接。
-type b:查找块设备文件。
-type c:查找字符设备文件。
-type s:查找套接字文件。
-type p:查找FIFO文件。
3. -size:按大小查找文件。
-size [+,-]n:查找大于(+)或小于(-)n个512字节块的文件。
-size n[cwbkMGTP]:查找大于(+)或小于(-)n个单位(字节、块、KB、MB、GB、TB、PB)的文件。
5. -perm:按权限查找文件。
-perm mode:以mode权限查找文件。
6. -exec:对结果执行命令。
7. -user:按所有者查找文件。
-user username:查找属于username的文件。
8. -group:按组查找文件。
-group groupname:查找属于groupname的文件。
9. -maxdepth:指定递归的最大深度。
-maxdepth n:最多递归到n层目录。
10. -mindepth:指定递归的最小深度。
-mindepth n:从第n层目录开始递归。
linux下find命令整理
Linux下find 命令整理在windows系统中,我们可以通过开始-搜索来查找想要的文件,这样既方便又快捷。
但是对于刚接触linux系统的人而言,在linux上查找文件确不是那么简单。
当然,如果习惯了linux下的find命令,则会比windows下查找更方便。
首先熟悉一下find命令的格式:用法: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]默认路径为当前目录;默认表达式为-print表达式可能由下列成份组成:操作符、选项、测试表达式以及动作:操作符(优先级递减;未做任何指定时默认使用-and):( EXPR ) ! EXPR -not EXPR EXPR1 -a EXPR2 EXPR1 -and EXPR2EXPR1 -o EXPR2 EXPR1 -or EXPR2 EXPR1 , EXPR2位置选项(总是真): -daystart -follow -regextype普通选项(总是真,在其它表达式前指定):-depth --help -maxdepth LEVELS -mindepth LEVELS -mount -noleaf--version -xdev -ignore_readdir_race -noignore_readdir_race比较测试(N 可以是+N 或-N 或N): -amin N -anewer FILE -atime N -cmin N -cnewer 文件-ctime N -empty -false -fstype 类型-gid N -group 名称-ilname 匹配模式-iname 匹配模式-inum N -ipath 匹配模式-iregex 匹配模式-links N -lname 匹配模式-mmin N -mtime N -name 匹配模式-newer 文件-nouser -nogroup -path PATTERN -perm [+-]MODE -regex PATTERN-readable -writable -executable-wholename PATTERN -size N[bcwkMG] -true -type [bcdpflsD] -uid N-used N -user NAME -xtype [bcdpfls]-context CONTEXTactions: -delete -print0 -printf FORMAT -fprintf FILE FORMAT -print-fprint0 FILE -fprint FILE -ls -fls FILE -prune -quit-exec COMMAND ; -exec COMMAND {} + -ok COMMAND ;-execdir COMMAND ; -execdir COMMAND {} + -okdir COMMAND ;下面根据我们常用的查找文件的方式来介绍find命令的各个参数。
find用法 linux -回复
find用法linux -回复Find命令是Linux系统中一个非常强大且常用的命令,用于查找文件、目录以及符合某些条件的内容。
它提供了许多选项和参数,以便根据不同的需求来搜索文件。
本文将逐步解释find命令的使用方法,以及一些常见的应用场景。
一、查找文件和目录首先,我们来看一下最基本的用法。
要在Linux系统中查找文件或者目录,可以使用以下命令格式:find [路径] [选项] [表达式]其中,路径是需要查找的目录或者文件的路径;选项用于指定查找的属性和条件;表达式用于指定要查找的文件或目录的模式。
示例1:查找当前目录下所有的.txt文件。
find . -name "*.txt"- "."表示当前目录,也可以通过指定其他目录来搜索。
- "-name"选项用于指定文件名模式,这里我们使用通配符"*"来匹配所有文件,后缀为".txt"的文件。
示例2:查找当前目录下大小大于10MB的文件。
find . -size +10M- "-size"选项用于指定文件大小,"+10M"表示文件大小大于10MB。
示例3:查找当前目录下最近7天内修改过的文件。
find . -mtime -7- "-mtime"选项用于指定文件的修改时间,"-7"表示7天以内的文件。
二、查找并执行操作除了寻找文件和目录,find命令还可以与-exec参数结合使用,以便在找到文件后执行某些操作。
下面是一个例子:示例4:查找当前目录下以".txt"结尾的文件,并将它们复制到新的目录。
find . -name "*.txt" -exec cp {} /新目录\;- "{}"表示找到的文件。
这里我们将它们复制到了新目录,你可以根据需要修改目标目录的路径。
find指令用法
find指令用法find指令是Linux系统中常用的一种通用搜索工具,可以用于查找文件和目录。
使用方式:1. 基本语法:find [路径] [表达式]例如:find /home/user/ -name '*.txt' -print其中,“/home/user/”为要搜索的路径,“-name”是匹配的表达式,“*.txt”代表文件名以.txt结尾,“-print”表示将搜索结果输出到屏幕上。
2. 按文件类型搜索:(1)搜索所有文件:find /home/user/ -type f -print其中,“-type f”表示搜索文件类型为“普通文件”。
(2)搜索所有目录:find /home/user/ -type d -print其中,“-type d”表示搜索文件类型为“目录”。
(3)搜索所有链接文件:find /home/user/ -type l -print 其中,“-type l”表示搜索文件类型为“链接文件”。
3. 按文件大小搜索:(1)搜索大于指定大小的文件:find /home/user/ -size +10M -print其中,“+10M”表示搜索大小大于10MB的文件。
(2)搜索小于指定大小的文件:find /home/user/ -size -10M -print其中,“-10M”表示搜索大小小于10MB的文件。
4. 按修改时间搜索:(1)搜索最近N天内修改的文件:find /home/user/ -mtime -N -print其中,“-mtime -N”表示搜索最近N天内被修改过的文件。
(2)搜索最近N天外修改的文件:find /home/user/ -mtime +N -print其中,“-mtime +N”表示搜索最近N天外修改的文件。
5. 按用户和组搜索:(1)搜索属于某个用户的文件:find /home/user/ -user username -print其中,“-user username”表示搜索属于用户名为“username”的文件。
Linux中find常见用法
Linux中find常见用法·find path -option [ -print ] [ -exec -ok command ] {} \;#-print 将查找到的文件输出到标准输出#-exec command {} \; —–将查到的文件执行command操作,{} 和 \;之间有空格#-ok 和-exec相同,只不过在操作前要询用户====================================================-name filename #查找名为filename的文件-perm #按执行权限来查找-user username #按文件属主来查找-group groupname #按组来查找-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前-atime -n +n #按文件访问时间来查GIN: 0px">-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存-newer f1 !f2 找文件,-n指n天以内,+n指n天以前-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存-newer f1 !f2 #查更改时间比f1新但比f2旧的文件-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件-size n[c] #查长度为n块[或n字节]的文件-depth #使查找在进入子目录前先行查找完本目录-fstype #查更改时间比f1新但比f2旧的文件-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件-size n[c] #查长度为n块[或n字节]的文件-depth #使查找在进入子目录前先行查找完本目录-fstype #查位于某一类型文件系统中的文件,这些文件系统类型通常可在/etc/fstab中找到-mount #查文件时不跨越文件系统mount点-follow #如果遇到符号链接文件,就跟踪链接所指的文件-cpio %; #查位于某一类型文件系统中的文件,这些文件系统类型通常可在/etc/fstab中找到-mount #查文件时不跨越文件系统mount点-follow #如果遇到符号链接文件,就跟踪链接所指的文件-cpio #对匹配的文件使用cpio命令,将他们备份到磁带设备中-prune #忽略某个目录=====================================================$find ~ -name "*.txt" -print #在$HOME中查.txt 文件并显示$find . -name "*.txt" -print$find . -name "[A-Z]*" -print #查以大写字母开头的文件$find /etc -name "host*" -print #查以host开头的文件$find . -name "[a-z][a-z][0–9][0–9].txt" -print #查以两个小写字母和两个数字开头的txt文件$find . -perm 755 -print$find . -perm -007 -exec ls -l {} \; #查所有用户都可读写执行的文件同-perm 777$find . -type d -print$find . ! -type d -print$find . -type l -print$find . -size +1000000c -print #查长度大于1Mb的文件$find . -size 100c -print # 查长度为100c的文件$find . -size +10 -print #查长度超过期作废10块的文件(1块=512字节)$cd /$find etc home apps -depth -print |cpio -ivcdC65536 -o /dev/rmt0$find /etc -name "passwd*" -execgrep "cnscn" {} \; #看是否存在cnscn用户$find . -name "yao*" | xargs file$find . -name "yao*" | xargs echo "" >/tmp/core.log$find . -name "yao*" | xargs chmod o-w======================================================find -name april* 在当前目录下查找以april开始的文件find -name april* fprint file 在当前目录下查找以april开始的文件,并把结果输出到file中find -name ap* -o -name may* 查找以ap或may开头的文件find /mnt -name tom.txt -ftype vfat 在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件find /mnt -name t.txt ! -ftype vfat 在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件find /tmp -name wa* -type l 在/tmp下查找名为wa开头且类型为符号链接的文件find /home -mtime -2 在/home下查最近两天内改动过的文件find /home -atime -1 查1天之内被存取过的文件find /home -mmin +60 在/home 下查60分钟前改动过的文件find /home -amin +30 查最近30分钟前被存取过的文件find /home -newer tmp.txt 在/home下查更新时间比tmp.txt近的文件或目录find /home -anewer tmp.txt 在/home下查存取时间比tmp.txt近的文件或目录find /home -used -2 列出文件或目录被改动过之后,在2日内被存取过的文件或目录find /home -user cnscn 列出/home目录内属于用户cnscn的文件或目录find /home -uid +501列出/home目录内用户的识别码大于501的文件或目录find /home -group cnscn 列出/home内组为cnscn的文件或目录find /home -gid 501 列出/home内组id为501的文件或目录find /home -nouser 列出/home内不属于本地用户的文件或目录find /home -nogroup 列出/home内不属于本地组的文件或目录find /home -name tmp.txt -maxdepth 4 列出/home内的tmp.txt 查时深度最多为3层find /home -name tmp.txt -mindepth 3 从第2层开始查find /home -empty 查找大小为0的文件或空目录find /home -size +512k 查大于512k的文件find /home -size -512k 查小于512k的文件find /home -links +2 查硬连接数大于2的文件或目录find /home -perm 0700 查权限为700的文件或目录find /tmp -name tmp.txt -exec cat {} \;find /tmp -name tmp.txt -ok rm {} \;find / -amin -10 # 查找在系统中最后10分钟访问的文件find / -atime -2 # 查找在系统中最后48小时访问的文件find / -empty # 查找在系统中为空的文件或者文件夹find / -group cat # 查找在系统中属于groupcat的文件find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件find / -mtime -1 #查找在系统中最后24小时里修改过的文件find / -nouser #查找在系统中属于作废用户的文件find / -user fred #查找在系统中属于FRED这个用户的文件查当前目录下的所有普通文件# find . -type f -exec ls -l {} \;-rw-r–r– 1 root root 349282003-02-25 ./conf/httpd.conf-rw-r–r– 1 root root 129592003-02-25 ./conf/magic-rw-r–r– 1 root root 1802003-02-25 ./conf.d/README查当前目录下的所有普通文件,并在- e x e c选项中使用ls -l命令将它们列出=================================================在/ l o g s目录中查找更改时间在5日以前的文件并删除它们:$ find logs -type f -mtime +5 -exec -ok rm {} \;=================================================查询当天修改过的文件[root@book class]# find ./ -mtime -1 -typef -exec ls -l {} \;=================================================查询文件并询问是否要显示[root@book class]# find ./ -mtime -1 -typef -ok ls -l {} \;< ls … ./classDB.inc.php > ? y-rw-r–r– 1 cnscn cnscn 13709 1月 12 12:22 ./classDB.inc.php[root@book class]# find ./ -mtime -1 -typef -ok ls -l {} \;< ls … ./classDB.inc.php > ? n[root@book class]#=================================================查询并交给awk去处理[root@book class]# who | awk ’{print $1"\t"$2}’cnscn pts/0=================================================awk—grep—sed[root@book class]# df -k | awk ‘{print $1}’| grep -v ’none’ | sed s"/\/dev\///g"文件系统sda2sda1[root@book class]# df -k | awk ‘{print $1}’| grep -v ’none’文件系统/dev/sda2/dev/sda11)在/tmp中查找所有的*.h,并在这些文件中查找“SYSCALL_VECTOR",最后打印出所有包含"SYSCALL_VECTOR"的文件名A) find /tmp -name "*.h" | xargs -n50 grep SYSCALL_VECTORB) grep SYSCALL_VECTOR /tmp/*.h | cut -d’:' -f1| uniq > filenameC) find /tmp -name "*.h" -exec grep"SYSCALL_VECTOR" {} \; -print2)find / -name filename -exec rm -rf {} \;find / -name filename -ok rm -rf {} \;3)比如要查找磁盘中大于3M的文件:find . -size +3000k -exec ls -ld {} ;4)将find出来的东西拷到另一个地方find *.c -exec cp ‘{}’ /tmp ‘;’如果有特殊文件,可以用cpio,也可以用这样的语法:find dir -name filename -print | cpio -pdv newdir6)查找2004-11-30 16:36:37时更改过的文件# A=`find ./ -name "*php"` | ls -l –full-time $A 2>/dev/null | grep "2004-11-30 16:36:37"。
Linux命令高级技巧使用find命令查找特定类型的文件
Linux命令高级技巧使用find命令查找特定类型的文件在Linux系统中,Find命令是一个非常强大且常用的命令工具,它可以帮助用户快速、精确地查找特定类型的文件。
本文将介绍Linux命令高级技巧,以及如何使用Find命令来查找特定类型的文件。
I. Find命令的基本用法Find命令是一种非常强大的文件搜索命令,其基本用法如下所示:1. find [path] [options] [expression]在上述命令中,[path]表示要搜索的目录路径,[options]表示命令选项,[expression]表示要查找的文件类型或其他条件表达式。
下面将详细介绍Find命令的高级技巧。
II. 根据文件类型查找文件Find命令可以根据文件类型进行文件搜索。
下面是一些常见的文件类型查找示例:1. 查找所有的文本文件:find /path/to/search -type f -name "*.txt"2. 查找所有的图片文件:find /path/to/search -type f -name "*.jpg" -o -name "*.png"3. 查找所有的压缩文件:find /path/to/search -type f -name "*.zip" -o -name "*.tar.gz"以上示例中,“/path/to/search”是要进行搜索的目录路径。
通过使用-type选项指定文件类型为“f”,-name选项指定文件名的匹配模式,可以准确地查找到所需的文件。
III. 根据文件大小查找文件Find命令还可以根据文件大小进行文件搜索。
下面是几个常见的文件大小查找示例:1. 查找大于1MB的文件:find /path/to/search -type f -size +1M2. 查找小于10KB的文件:find /path/to/search -type f -size -10k在上述示例中,-size选项用于指定文件的大小范围。
使用find命令定期清理过期文件和
使用find命令定期清理过期文件和find命令是Linux系统中非常常用的命令之一,它可以帮助我们在文件系统中查找并定位指定条件的文件。
通过结合其他命令,我们还可以使用find命令来清理过期的文件和目录,以释放磁盘空间并保持系统的良好运行。
本文将介绍如何使用find命令定期清理过期文件和目录。
一、了解find命令的基本用法在开始使用find命令清理过期文件之前,首先需要了解find命令的基本用法。
find命令的语法格式如下:find [path] [expression]其中,path表示要查找的路径,可以是一个或多个目录,也可以是一个或多个文件;expression表示要查找的条件,可以是文件名、文件类型、文件大小等等。
下面是一些常用的find命令选项和表达式:1. -name:按照文件名进行查找,可以使用通配符;2. -type:按照文件类型进行查找,常见的类型有f(普通文件)、d (目录)、l(符号链接);3. -size:按照文件大小进行查找,可以使用+和-来表示大于或小于某个特定大小;4. -mtime:按照文件的修改时间进行查找,可以使用+和-来表示在某个时间之前或之后;5. -exec:对查找到的文件执行指定的命令。
二、使用find命令清理过期文件和目录使用find命令清理过期文件和目录的步骤如下:1. 确定要清理的路径:首先需要确定要清理的文件或目录所在的路径。
可以是一个具体的路径,也可以是多个路径,使用空格分隔。
2. 确定清理的条件:根据实际情况,确定要清理的文件或目录的条件。
可以根据文件名、文件类型、文件大小等等进行查找。
3. 执行清理操作:使用find命令结合-exec选项执行清理操作。
可以将要执行的清理命令放在-exec选项后面,并使用{}表示find命令查找到的文件或目录。
下面是一个清理过期文件和目录的示例:```shellfind /path/to/clean -type f -name "*.log" -mtime +7 -exec rm {} \;```上述示例中,/path/to/clean表示要清理的路径,-type f表示查找普通文件,-name "*.log"表示文件名以.log结尾,-mtime +7表示文件的修改时间在7天之前,-exec rm {} \;表示找到的文件执行rm命令进行删除操作。
高级Linux命令技巧使用find命令进行文件搜索和管理
高级Linux命令技巧使用find命令进行文件搜索和管理在Linux系统中,find命令是一种强大的工具,用于搜索和管理文件。
它可以帮助我们快速定位和操作特定的文件或目录。
本文将介绍一些高级的Linux命令技巧,以帮助您更好地使用find命令进行文件搜索和管理。
一、查找文件1. 按文件名查找:要按文件名查找文件,可以使用以下命令:find /path/to/search -name "filename"其中,/path/to/search是您要搜索的路径,"filename"是您要查找的文件名。
可以使用通配符来模糊匹配文件名,例如使用"*"表示任意字符。
2. 按文件类型查找:有时候我们需要查找某一类型的文件,可以使用以下命令:find /path/to/search -type f这将只会返回普通文件,不包括目录或其他类型的文件。
3. 按文件大小查找:要按文件大小查找文件,可以使用以下命令:find /path/to/search -size +10M这将返回大于10M的文件。
您可以使用k、M、G等单位来指定文件大小。
4. 按文件权限查找:要按文件权限查找文件,可以使用以下命令:find /path/to/search -perm 600这将返回具有权限为600的文件。
您可以根据需要自定义权限。
二、执行操作除了查找文件,find命令还可以执行操作,例如删除、复制或移动文件。
1. 删除文件:要删除文件,可以使用以下命令:find /path/to/search -name "filename" -delete这将删除与指定文件名匹配的文件。
2. 复制文件:用find命令复制文件的语法如下:find /path/to/search -name "filename" -exec cp {} /path/to/destination \;这将找到与指定文件名匹配的文件,并将其复制到指定的目标路径。
linux find正则
linux find正则
在Linux中,find命令是一个非常强大的工具,可以用于查找文件或目录。
而正则表达式则是一种用来匹配文本的模式。
在使用find命令时,正则表达式可以帮助我们更加精确地查找文件或目录。
以下是一些在Linux中使用find命令和正则表达式的示例: 1. 查找以.txt结尾的文件:
```
find /path/to/directory -type f -name '*.txt'
```
2. 查找所有以数字开头的文件:
```
find /path/to/directory -type f -regex '^/[0-9].*'
```
3. 查找所有以字母开头的文件:
```
find /path/to/directory -type f -regex '^/[a-zA-Z].*' ```
4. 查找所有以a、b、c开头的文件:
```
find /path/to/directory -type f -regex '^/[abc].*'
```
5. 查找以数字结尾的文件:
```
find /path/to/directory -type f -regex '.*[0-9]$'
```
需要注意的是,在Linux中,正则表达式有一些特殊字符,如^、$、*、+等,如果要使用这些字符作为普通字符进行匹配,需要进行转义,例如:^、$、*、+等。
Linux命令高级技巧使用find命令进行递归搜索和操作
Linux命令高级技巧使用find命令进行递归搜索和操作在Linux系统中,find命令是一种非常强大的工具,可以用于递归搜索文件和目录,并进行各种操作。
本文将介绍使用find命令进行递归搜索和操作的高级技巧。
一、递归搜索文件和目录在Linux系统中,使用find命令进行递归搜索文件和目录非常简单。
其基本语法如下:```find [path] [options] [expression]```1. 在当前目录递归搜索如果不指定[path]参数,则find命令默认从当前目录开始递归搜索。
例如,要在当前目录及其子目录中搜索所有的文本文件,可以使用以下命令:```find . -type f -name "*.txt"```上述命令中,`.`表示当前目录,`-type f`表示搜索文件,`-name "*.txt"`表示搜索以.txt结尾的文件。
2. 指定搜索路径可以通过在命令中指定[path]参数,来指定find命令的搜索路径。
例如,要在`/home/user/`目录下搜索所有的图片文件,可以使用以下命令:```find /home/user/ -type f -name "*.jpg"```上述命令中,`/home/user/`为指定的搜索路径。
3. 搜索特定类型的文件可以使用`-type`参数来指定要搜索的文件类型。
常见的文件类型包括:普通文件(`f`)、目录(`d`)、链接文件(`l`)、字符设备(`c`)、块设备(`b`)、套接字(`s`)和FIFO(`p`)。
例如,要搜索所有的目录文件,可以使用以下命令:```find / -type d```上述命令中,`/`表示从根目录开始搜索,`-type d`表示搜索目录文件。
二、使用条件表达式进行搜索find命令支持使用条件表达式进行更加精确的搜索。
常用的条件表达式包括:名称匹配、大小匹配、权限匹配和时间匹配。
Linux命令高级技巧使用find进行文件搜索
Linux命令高级技巧使用find进行文件搜索在Linux操作系统中,文件搜索是一项非常常见和重要的任务。
为了更高效地进行文件搜索,Linux提供了一个强大的命令工具find。
通过使用find命令,用户可以根据不同的搜索条件来查找文件,并且可以对搜索结果进行进一步的操作。
本文将介绍一些使用find命令进行文件搜索的高级技巧。
1. 搜索特定文件名有时候我们需要搜索具有特定文件名的文件。
find命令可以使用“-name”选项来指定要搜索的文件名。
例如,我们要搜索名为“example.txt”的文件,可以使用以下命令:```find /path/to/directory -name "example.txt"```上述命令将在“/path/to/directory”目录及其子目录中搜索名为“example.txt”的文件。
2. 模糊匹配文件名有时候我们只记得文件名的部分内容,或者希望进行模糊匹配。
这时可以使用通配符来进行搜索。
常用的通配符有“*”和“?”。
其中“*”表示匹配0个或多个字符,“?”表示匹配一个字符。
例如,我们要搜索以“file”开头的文件,可以使用以下命令:find /path/to/directory -name "file*"```上述命令将在“/path/to/directory”目录及其子目录中搜索以“file”开头的文件。
3. 排除特定文件名有时候我们希望搜索一类文件,但又想排除其中的某些文件。
find 命令可以使用“-not”选项来排除特定文件名。
例如,我们要搜索以“file”开头的文件,但排除名为“file.txt”的文件,可以使用以下命令:```find /path/to/directory -name "file*" -not -name "file.txt"```上述命令将在“/path/to/directory”目录及其子目录中搜索以“file”开头的文件,但排除名为“file.txt”的文件。
Linux命令高级技巧使用findgrepsedxargs和awk命令进行高级文件搜索和批量处理
Linux命令高级技巧使用findgrepsedxargs 和awk命令进行高级文件搜索和批量处理Linux命令高级技巧:使用find、grep、sed、xargs和awk命令进行高级文件搜索和批量处理Linux是一种常用的操作系统,广泛应用于服务器和嵌入式设备。
作为开源操作系统,Linux提供了强大的命令行工具,这些工具可以通过各种命令和参数来完成各种任务。
本文将介绍Linux中几个常用的命令:find、grep、sed、xargs和awk,并讲解如何使用它们来进行高级文件搜索和批量处理。
一、find命令find命令用于在指定目录中搜索文件和目录。
它可以根据文件名、文件类型、文件大小、文件时间等多个条件进行搜索。
以下是find命令的基本语法:find [路径] [条件]其中,路径表示搜索的起始目录,条件表示搜索的条件。
下面是一些常见的find命令使用示例:1. 在当前目录下搜索以.txt结尾的文件:$ find . -name "*.txt"该命令会从当前目录开始搜索,找到以.txt结尾的文件并打印出它们的路径。
2. 在指定目录及其子目录下搜索大于100MB的文件:$ find /path/to/dir -size +100M该命令会在指定目录及其子目录中搜索大于100MB的文件并打印出它们的路径。
3. 在系统根目录下搜索所有的空文件:$ find / -type f -empty该命令会在系统根目录下搜索所有的空文件并打印出它们的路径。
二、grep命令grep命令用于在文件中搜索指定的模式。
它可以根据正则表达式匹配模式,并打印出包含该模式的行。
以下是grep命令的基本语法:grep [选项] 模式 [文件]其中,选项表示grep命令的参数,模式表示要搜索的模式,文件表示要搜索的文件。
下面是一些常见的grep命令使用示例:1. 在文件中搜索包含指定关键字的行:$ grep "keyword" file.txt该命令会在file.txt文件中搜索包含关键字"keyword"的行并打印出它们。
Linux find 用法示例
======================================================
find -name april* 在当前目录下查找以april开始的文件
find -name april* fprint file 在当前目录下查找以april开始的文件,并把结果输出到file中
find -name ap* -o -name may* 查找以ap或may开头的文件
find /mnt -name tom.txt -ftype vfat 在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件
find /home -size +512k 查大于512k的文件
find /home -size -512k 查小于512k的文件
find /home -links +2 查硬连接数大于2的文件或目录
#查以两个小写字母和两个数字开头的txt文件
$find . -perm 755 -print
$find . -perm -007 -exec ls -l {} \; #查所有用户都可读写执行的文件同-perm 777
$find . -type d -print
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
Linux find 用法示例 - wanqi - 博客园 wanqi
【linux】find命令详解
【linux】find命令详解find命令格式:find [搜索范围][匹配条件]-name 参数:按照名字查找12 3 4 5 6 7 8 9 10 11[root@andon ~]# find /root -name test ###精确查找/root/test/root/.cpan/build/Template-Toolkit-2.26-LlOKAK/t/test[root@andon ~]# find /root -name test??###模糊查找/root/.cpan/build/PadWalker-2.2-TvkCqL/t/test.t/root/.cpan/build/YAML-1.15-LasxIR/t/test.t/root/.cpan/build/Test-Differences-0.64-QP24fE/t/test.t/root/.cpan/build/Email-Sender-1.300028-u3FaFt/t/test.t/root/.cpan/build/Email-Reply-1.204-YAHruY/t/test.t[root@andon ~]# find /root -name *test* ##模糊查找,查找含有test的单词find: paths must precede expression: itest-iname参数:按照不区分名字查找1 2 3[root@andon ~]# find /root -iname test ###不区分⼤⼩写/root/TEST/root/test-size参数:按照尺⼨查找1 2 3 4 5 6[root@andon ~]# find /root -size 2048(数据块) ##等于1M [root@andon ~]# find /root -size +2048 ##⼤于1M[root@andon ~]# find /root -size -2048 ## ⼩于1M####⼀个数据块=512字节=0.5KB####1MB=1024KB=2048数据块-user参数:按照所属⽤户查询1[root@andon home]# find /home -user admin ##查询属于admin⽤户的⽂件 -group:按照所属组查询 同上-amin:访问时间access1 2[root@andon home]# find /home -amin +5 #### ⼤于5分钟时被访问的⽂件[root@andon home]# find /home -amin -5 #### 5分钟内被访问的⽂件-cmin:⽂件更改属性change ⽤法同amin-type:按照⽂件类型查找1 2 3[root@andon ~]# find /root -type d ###directory 按照⽬录查询[root@andon ~]# find /root -type f ###file 按照⽂件查询[root@andon ~]# find /root -type l ###link 按照连接查询-a:两条件同时满⾜1[root@andon ~]# find /root -size +20480 -a -size -204800 ##查找同时满⾜⼤于10M⼩于100M的⽂件<br>[root@andon ~]# find /root -size +20480 -a -type f ##查找同时满⾜⼤于10M且类型为⽂件-o:两个条件满⾜任意⼀个即可⽤法同-a-inum:根据节点进⾏搜索1 2 3 4 5[root@andon ~]# find / -inum 1319562find: `/proc/23352/task/23352/fd/5': No such file or directory find: `/proc/23352/task/23352/fdinfo/5': No such file or directory find: `/proc/23352/fd/5': No such file or directoryfind: `/proc/23352/fdinfo/5': No such file or directory6/root/test。
Linux命令高级技巧使用find命令进行复杂的递归搜索和操作
Linux命令高级技巧使用find命令进行复杂的递归搜索和操作在Linux系统中,find命令是一款非常强大和实用的工具,可用于文件系统中的递归搜索和操作。
它可以根据指定的条件搜索文件,并对匹配的文件执行相应的操作。
本文将介绍一些使用find命令进行复杂递归搜索和操作的高级技巧。
一、递归搜索文件1. 搜索指定文件类型使用find命令搜索指定文件类型非常常见。
例如,要搜索所有的文本文件(以.txt为后缀),可以使用以下命令:```find . -name "*.txt"```上述命令将在当前目录(及其子目录)中搜索以.txt为后缀的文件,并将搜索结果输出。
2. 限制搜索深度有时候我们希望在搜索过程中限制搜索的深度,以避免搜索整个文件系统。
可以使用-maxdepth参数来限制搜索的深度。
例如,要搜索当前目录及其直接子目录下的所有文件,可以使用以下命令: ```find . -maxdepth 2```上述命令将限制搜索深度为2,即只搜索当前目录及其直接子目录。
3. 排除指定目录在使用find命令进行搜索时,有时候我们希望排除某个或某些目录。
可以使用-prune参数来实现。
例如,要搜索当前目录下的所有文件,但排除子目录subdir,可以使用以下命令:```find . -path "./subdir" -prune -o -type f -print```上述命令将排除目录"./subdir",然后搜索其他的文件并输出结果。
二、递归操作文件1. 批量更改文件权限在Linux系统中,可以使用find命令批量更改文件权限。
例如,要将当前目录及其子目录下的所有文件的权限设置为644,可以使用以下命令:```find . -type f -exec chmod 644 {} +```上述命令将搜索当前目录及其子目录下的所有文件,并对每个文件执行chmod 644命令进行权限更改。
linuxshell之find高级点的用法
linuxshell之find高级点的用法1 查找当前目录a.txt和b.txt文件,下面的o是or的意思, -iname 是忽略大小写的意思(-o -iname)find . -iname a.txt -o -iname b.txt2 查找当前目录下的除了a.txt的文件(!)find . ! -iname "a.txt"3 查看当前目前下的目录(-type d)find . -type d4 查看当前目录下的普通文件(-type f)find . -type f5 查看当前目录下访问时间在一天内的文件(-atime)find . -type f -atime -16 查看当前目录下访问时间在恰好一天的文件(-atime)find . -type f -atime 17 查看当前目录下访问时间在恰好大于一天的文件(-atime)find . -type f -atime +18 查看当前目录下访问时间在一分钟内的文件(-amin)find . -type f -amin -19 查看当前目录下访问时间在恰好一分钟的文件(-amin)find . -type f -amin 110 查看当前目录下访问时间在恰好大于一分钟的文件(-amin)find . -type f -amin +111 查看当前目录下访问时间在访问b.txt文件更加接近的文件,就是更加接近现在(-newer)find . -type f -newer b.txt12 查看当前目录下文件大小在2G之内的文件(-size)find . -type f -size -2G13 查看当前目录下文件大小恰好2M的文件(-size)find . -type f -size 2M14 查看当前目录下文件大小恰好2K的文件(-size)find . -type f -size +2k15 删除当前目录下面的*.txt文件(-delete)find . -name *.txt -delete16 给当前目录的sh文件添加权限(-exec {} \;)find . -name "*.sh" -exec chmod 777 {} \;17 给当前目录下的普通文件添加权限(-exec {} \;)find . -type f -exec chmod 777 {} \;18 复制当前目录的sh文件到./sh目录(-exec {} \;)find . -name "*.sh" -exec cp {} ./sh/ \;19 删除当前目录的sh文件(-exec {} \;)find . -name "*.sh" -exec rm {} \;20 查找当前目录下的不包含".git"目录下的普通文件(-prune修剪)find . -type f -o -name "*.git" -prune。
linux文件操作find命令
"find" 命令用于在指定的目录中查找文件和目录,以下是几个示例:
1.在当前目录及其子目录中查找所有名为"example.txt" 的文件:find . -name example.txt
2.在指定的目录中查找所有大于10MB 的文件:
find /path/to/directory -size +10M
3.在当前目录及其子目录中查找所有修改时间在过去7 天内的文件:find . -type f -mtime -7
4.在当前目录及其子目录中查找所有具有特定权限的文件:
find . -type f -perm 0777
5.在当前目录及其子目录中查找所有修改时间在1 小时以内的文件:find . -type f -mmin -60
6.在当前目录及其子目录中查找所有具有特定扩展名的文件:
find . -type f -name "*.txt"
注意:上述命令中的"." 表示当前目录。
linux系统find 用法
linux系统find 用法在Linux系统中,`find`命令用于在文件系统中查找文件和目录。
以下是`find`命令的常用用法:1. 查找指定目录下的所有文件和子目录:```find /path/to/directory```其中,`/path/to/directory`是要查找的目录路径。
2. 查找指定目录下的具有特定名称的文件:```find /path/to/directory -name "filename"```其中,`/path/to/directory`是要查找的目录路径,`filename`是要查找的文件名。
3. 查找指定目录下的具有特定扩展名的文件:```find /path/to/directory -name "*.extension"```其中,`/path/to/directory`是要查找的目录路径,`extension`是要查找的文件扩展名。
4. 查找指定目录下修改时间在n天以内的文件:```find /path/to/directory -mtime n```其中,`/path/to/directory`是要查找的目录路径,`n`是天数。
5. 在多个目录中查找文件:```find /path/to/directory1 /path/to/directory2 -name "filename"```可以同时指定多个目录路径来进行查找。
6. 查找符号链接文件:```find /path/to/directory -type l```其中,`/path/to/directory`是要查找的目录路径。
7. 通过文件大小进行查找:```find /path/to/directory -size [+|-]n[cwbkMG]```其中,`/path/to/directory`是要查找的目录路径,`+|-`表示大于或者小于,`n`是以`cwbkMG`为单位的大小。
linux里find的用法
在 Linux 系统中,find 命令是一个强大的文件搜索工具,用于在指定目录及其子目录中查找文件。
以下是 find 命令的常用用法示例:1、查找特定文件名:、find /path/to/directory -name "filename"这会在/path/to/directory 目录及其子目录中查找名为"filename" 的文件。
2、查找特定文件类型:find /path/to/directory -type f这会在 /path/to/directory 目录及其子目录中查找所有的普通文件。
3、查找符合多个条件的文件:find /path/to/directory -name "*.txt" -size +1M这会在 /path/to/directory 目录及其子目录中查找文件名以".txt" 结尾且大小大于 1MB 的文件。
4、排除特定目录:find /path/to/directory -name "*.log" -not -path "/path/to/directory/exclude/*"这会在 /path/to/directory 目录及其子目录中查找 ".log" 文件,但排除 /path/to/directory/exclude/ 目录及其子目录。
5、执行操作:find /path/to/directory -name "*.txt" -exec rm {} \;这会在 /path/to/directory 目录及其子目录中查找 ".txt" 文件,并执行删除操作。
Linux命令find之查找文件的示例
Linux命令find之查找⽂件的⽰例在 Linux 命令中,find⽤于在指定⽬录下查找⽂件。
任何位于参数之前的字符串都将被视为欲查找的⽬录名,其⽀持按名称查找、按正则表达式查找、按⽂件⼤⼩查找、按⽂件权限查找等多种查询⽅式。
如果在使⽤该命令时,不设置任何参数,则find命令将在当前⽬录下查找⼦⽬录与⽂件,并且将查找到的⼦⽬录和⽂件全部进⾏显⽰。
语法:find + ⽬标⽬录(路径) + <选项> + 参数常⽤选项列表选项含义-perm <权限数值>查找符合指定的权限数值的⽂件或⽬录-type <⽂件类型>只寻找符合指定的⽂件类型的⽂件-name <范本样式>指定字符串作为寻找⽂件或⽬录的范本样式-expty寻找⽂件⼤⼩为 0 Byte 的⽂件,或⽬录下没有任何⼦⽬录或⽂件的空⽬录-ls假设find指令的回传值为ture,就将⽂件或⽬录名称列出到标准输出-maxdepth <⽬录层级>设置最⼤⽬录层级-mindepth <⽬录层级>设置最⼩⽬录层级-exec <执⾏指令>假设find指令的回传值为true,就执⾏该指令-ok <执⾏指令>此参数的效果和指定-exec类似,但在执⾏指令之前会先询问⽤户,若回答y或Y,则放弃执⾏命令⽰例⾸先,给出演⽰使⽤的⽂件结构:⽰例 1:查找当前⽬录及其⼦⽬录下所有⽂件和⽂件夹find .⽰例 2:在/testLinux⽬录下查找以.txt结尾的⽂件名// 需要书写完整的路径find /tmp/cg/testLinux -name "*.txt"⽰例 3:组合查找⽂件名以file1开头(与、或、⾮)file2开头的⽂件/*** 组合查找语法:* -a 与(取交集)* -o 或(取并集)* -not ⾮(同!)* ! ⾮(同 not)*/find . -name "file1*" -a -name "file2*"find . -name "file1*" -o -name "file2*"find . -name "file1*" -not -name "file2*"find . -name "file1*" ! -name "file2*"⽰例 4:根据⽂件类型进⾏搜索/*** 查找当前⽬录及所有⼦⽬录下的普通⽂件*/find . -type f⽰例 5:基于⽬录深度进⾏搜索/*** 限制最⼤深度为 3*/find . -maxdepth 3 -type f/*** 限制最⼤深度为 2*/find . -maxdepth 2 -type f⽰例 6:基于⽂件权限进⾏搜索/*** 搜索权限为 777 的⽂件*/find . -type f -perm 777/*** 搜索 .txt 格式且权限不为 777 的⽂件*/find . -type f -name "*.txt" ! -perm 777⽰例 7:借助-exec命令,将当前⽬录及⼦⽬录下所有.txt格式的⽂件以File:⽂件名的形式打印出来find . -type f -name "*.txt" -exec printf "File: %s\n" {} \;⽰例 8:借助-exec命令,将当前⽬录及⼦⽬录下所有 3 天前的.txt格式的⽂件复制⼀份到old⽬录find . -type f -mtime +3 -name "*.txt" -exec cp {} old \;⽂件类型参数列表⽂件类型参数含义f普通⽂件l符号连接d⽬录c字符设备b块设备s套接字p Fifo⽂件⼤⼩单元列表⽂件⼤⼩单元含义b块(512 字节)c字节w字(2 字节)k千字节M兆字节G吉字节选项列表选项含义-amin <分钟>查找在指定时间曾被存取过的⽂件或⽬录,单位以分钟计算-atime <24⼩时数>查找在指定时间曾被存取过的⽂件或⽬录,单位以 24 ⼩时计算-cmin <分钟>查找在指定时间之时被更改过的⽂件或⽬录-ctime <24⼩时数>查找在指定时间之时被更改的⽂件或⽬录,单位以 24 ⼩时计算-anewer <参考⽂件或⽬查找其存取时间较指定⽂件或⽬录的存取时间更接近现在的⽂件或⽬录录>-cnewer <参考⽂件或⽬录>查找其更改时间较指定⽂件或⽬录的更改时间更接近现在的⽂件或⽬录-daystart从本⽇开始计算时间-depth从指定⽬录下最深层的⼦⽬录开始查找-expty寻找⽂件⼤⼩为 0 Byte 的⽂件,或⽬录下没有任何⼦⽬录或⽂件的空⽬录-exec <执⾏指令>假设find指令的回传值为true,就执⾏该指令-false将find指令的回传值皆设为false-fls <列表⽂件>此参数的效果和指定-ls参数类似,但会把结果保存为指定的列表⽂件-follow排除符号连接-fprint <列表⽂件>此参数的效果和指定-print参数类似,但会把结果保存成指定的列表⽂件-fprint0 <列表⽂件>此参数的效果和指定-print0参数类似,但会把结果保存成指定的列表⽂件-fprintf <列表⽂件> <输出此参数的效果和指定-printf参数类似,但会把结果保存成指定的列表⽂件格式>-fstype <⽂件系统类型>只寻找该⽂件系统类型下的⽂件或⽬录-gid <群组识别码>查找符合指定群组识别码的⽂件或⽬录-group <群组名称>查找符合指定群组名称的⽂件或⽬录-help或——help在线帮助-name <范本样式>指定字符串作为寻找⽂件或⽬录的范本样式-iname <范本样式>此参数的效果和指定-name参数类似,但忽略字符⼤⼩写的差别-ilname <范本样式>此参数的效果和指定-lname参数类似,但忽略字符⼤⼩写的差别-inum <inode编号>查找符合指定的inode编号的⽂件或⽬录-path <范本样式>指定字符串作为寻找⽬录的范本样式-ipath <范本样式>此参数的效果和指定-path参数类似,但忽略字符⼤⼩写的差别-iregex <范本样式>此参数的效果和指定-regexe参数类似,但忽略字符⼤⼩写的差别-links <连接数⽬>查找符合指定的硬连接数⽬的⽂件或⽬录选项含义-ls假设find指令的回传值为ture,就将⽂件或⽬录名称列出到标准输出-maxdepth <⽬录层级>设置最⼤⽬录层级-mindepth <⽬录层级>设置最⼩⽬录层级-mmin <分钟>查找在指定时间曾被更改过的⽂件或⽬录,单位以分钟计算-mount此参数的效果和指定-xdev相同-mtime <24⼩时数>查找在指定时间曾被更改过的⽂件或⽬录,单位以 24 ⼩时计算-newer <参考⽂件或⽬录>查找其更改时间较指定⽂件或⽬录的更改时间更接近现在的⽂件或⽬录-nogroup找出不属于本地主机群组识别码的⽂件或⽬录-noleaf不去考虑⽬录⾄少需拥有两个硬连接存在-nouser找出不属于本地主机⽤户识别码的⽂件或⽬录-ok <执⾏指令>此参数的效果和指定-exec类似,但在执⾏指令之前会先询问⽤户,若回答y或Y,则放弃执⾏命令-perm <权限数值>查找符合指定的权限数值的⽂件或⽬录-print假设find指令的回传值为ture,就将⽂件或⽬录名称列出到标准输出,格式为每列⼀个名称,每个名称前皆有./字符串-print0假设find指令的回传值为ture,就将⽂件或⽬录名称列出到标准输出,格式为全部的名称皆在同⼀⾏-printf <输出格式>假设find指令的回传值为ture,就将⽂件或⽬录名称列出到标准输出,格式可以⾃⾏指定-prune不寻找字符串作为寻找⽂件或⽬录的范本样式-regex <范本样式>指定字符串作为寻找⽂件或⽬录的范本样式-size <⽂件⼤⼩>查找符合指定的⽂件⼤⼩的⽂件-true将find指令的回传值皆设为true-type <⽂件类型>只寻找符合指定的⽂件类型的⽂件-uid <⽤户识别码>查找符合指定的⽤户识别码的⽂件或⽬录-used <⽇数>查找⽂件或⽬录被更改之后在指定时间曾被存取过的⽂件或⽬录,单位以⽇计算-user <拥有者名称>查找符和指定的拥有者名称的⽂件或⽬录-version或——version显⽰版本信息-xdev将范围局限在先⾏的⽂件系统中-xtype <⽂件类型>此参数的效果和指定-type参数类似,差别在于它针对符号连接检查以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
前阵子,我们审查了15件实事find命令的例子(第一部分)。
查找命令可以做很多比只是在寻找基于名称的文件(第2部分)在这篇文章中,让我们来讨论15高级find命令的例子,包括-根据它访问,修改或改变的时间查找文件,查找文件相比之下,执行操作找到的文件等。
基于访问/修改/更改时间查找文件你可以找到基于以下三个文件的时间属性的文件。
1.访问时间的文件。
文件访问时,访问时间得到更新。
2.的文件的修改时间。
文件内容修改时,修改时间得到更新。
3.更改文件的时间。
更改时间时,被更新的inode数据的变化。
在下面的例子中,min选项之间的差异和时间选项是参数。
∙分论点将它的参数为分钟。
例如,60分钟(1小时)= 60分钟。
∙时间参数,将它的参数为24小时。
例如,时间2 = 2 * 24小时(2天)。
∙虽然这样做的24个小时计算,小数部分都将被忽略,所以25小时为24小时,和47小时取为24小时,仅48小时为48小时。
要获得更清晰的参考atime的部分find 命令的手册页。
例1:找到在1个小时内被更改的文件想要通过文件修改时间找出文件,可以使用参数-mmin -mtime。
下面是man手册中有关mmin和mtime的定义。
∙-mmin n文件最后一次修改是在n分钟之内∙-mtime n文件最后一次修改是在n*24小时之内(译者注:也就是n天了呗)执行下面例子中的命令,将会找到当前目录以及其子目录下,最近一次修改时间在1个小时(60分钟)之内的文件或目录1 # find . -mmin -60同样的方式,执行下面例子中的命令,将会找到24小时(1天)内修改了的文件(文件系统根目录/ 下)1 # find / -mtime -1例2:找到1个小时内被访问过的文件想要通过文件访问时间找出文件,可以使用参数-amin -atime。
下面是man手册中有关amin和atime的定义。
∙-amin n文件最后一次访问是在n分钟之内∙-atime n文件最后一次访问是在n*24小时之内执行下面例子中的命令,将会找到当前目录以及其子目录下,最近一次访问时间在1个小时(60分钟)之内的文件或目录1 # find . -amin -60同样的方式,执行下面例子中的命令,将会找到24小时(1天)内被访问了的文件(文件系统根目录/ 下)1 # find / -atime -1例3:查找一个小时内状态被改变的文件(译者注:这里的改变更第1个例子的更改文件内容时间是不同概念,这里是更改的是文件inode的数据,比如文件的权限,所属人等等信息)要查找文件的inode的更改时间,使用-cmin和-ctime选项∙-cmin n文件的状态在n分钟内被改变∙-ctime n文件状态在n*24小时内(也就是n天内)被改变(译者注:如果上面的n为-n形式,则表示n分钟/天之内,n为+n则表示n分钟/天之前)下面的例子在当前目录和其子目录下面查找一个小时内文件状态改变的文件(也就是60分钟内):1 # find . -cmin -60同样的道理,下面的例子在根目录/及其子目录下一天内(24小时内)文件状态被改变的文件列表:1 # find / -ctime -1例4:搜索仅仅限定于文件,不显示文件夹上面的例子搜索出来不仅仅有文件,还会显示文件夹。
因为当一个文件被访问的时候,它所处的文件夹也会被访问,如果你对文件夹不感兴趣,那么可以使用-type f 选项下面的例子会显示30分钟内被修改过的文件,文件夹不显示:1 2 3 4 5 6 7 8 9101112131415161718192021# find /etc/sysconfig -amin -30../console./network-scripts./i18n./rhn./rhn/clientCaps.d./networking./networking/profiles./networking/profiles/default./networking/profiles/default/resolv.conf./networking/profiles/default/hosts./networking/devices./apm-scripts[注: 上面的输出包含了文件和文件夹]# find /etc/sysconfig -amin -30 -type f./i18n./networking/profiles/default/resolv.conf./networking/profiles/default/hosts[注: 上面的输出仅仅包含文件]例5:仅仅查找非隐藏的文件(不显示隐藏文件):如果我们查找的时候不想隐藏文件也显示出来,可以使用下面的正则式查找:下面的命令会显示当前目录及其子目录下15分钟内文件内容被修改过的文件,并且只列出非隐藏文件。
也就是说,以.开头的文件时不会显示出来的1 # find . -mmin -15 \( ! -regex ".*/\..*" \)基于文件比较的查找命令我们平时通过更别的东西进行比较,会更容易记住一些事情。
比如说我想找出在我编辑test文件之后编辑过的文件。
你可以通过test这个文件的编辑时间作为比较基准去查找之后编辑过的文件:例6:查找文件修改时间在某一文件修改后的文件:1 语法: find -newer FILE下面的例子显示在/etc/passwd修改之后被修改过的文件。
对于系统管理员,想知道你新增了一个用户后去跟踪系统的活动状态是很有帮助的(万一那新用户不老实,一上来就乱搞,你很快就知道了 ^_^):1 # find -newer /etc/passwd例7:查找文件访问时间在某一文件的修改时间之后的文件:1 # find -newer /etc/passwd下面的例子显示所有在/etc/hosts文件被修改后被访问到的文件。
如果你新增了一个主机/端口记录在/etc/hosts文件中,你很可能很想知道在那之后有什么文件被访问到了,下面是这个命令:1 # find -anewer /etc/hosts例8:查找状态改变时间在某个文件修改时间之后的文件:1 语法: find -cnewer FILE下面的例子显示在修改文件/etc/fstab之后所有文件状态改变过的文件。
如果你在/etc/fstab新增了一个挂载点,你很可能像知道那之后那些文件的状态发生了改变,这时候你可以使用如下命令:1 # find -cnewer /etc/fstab在查找到的文件列表结果上直接执行命令:这之前你已经看到了如果通过find命令去查找各种条件的文件列表。
如果你对这些find命令还不熟悉,我建议你看完上面的第一部分接下来这部分我们向你介绍如果在find命令上执行各种不同的命令,也就是说如何去操作find命令查找出来的文件列表。
我们能在find命令查找出来的文件名列表上指定任意的操作:1 # find <CONDITION to Find files> -exec <OPERATION> \;其中的OPERATION可以是任意的命令,下面列举一下比较常用的:∙ rm 命令,用于删除find查找出来的文件∙ mv 命令,用于重命名查找出的文件∙ ls -l 命令,显示查找出的文件的详细信息∙ md5sum,对查找出的文件进行md5sum运算,可以获得一个字符串,用于检测文件内容的合法性∙ wc 命令,用于统计计算文件的单词数量,文件大小等待∙执行任何Unix的shell命令∙执行你自己写的shell脚本,参数就是每个查找出来的文件名例9:在find命令输出上使用ls -l,列举出1小时内被编辑过的文件的详细信息1 2 3 4 5 6 7 # find -mmin -60./cron./secure# find -mmin -60 -exec ls -l {} \;-rw------- 1 root root 1028 Jun 21 15:01 ./cron-rw------- 1 root root 831752 Jun 21 15:42 ./secure例10:仅仅在当前文件系统中搜索系统管理员有时候仅仅想在/挂载的文件系统分区上搜索,而不想去搜索其他的挂载分区,比如/home/挂载分区。
如果你有多个分区被挂载了,你想在/下搜索,一般可以按下面的这样做下面这个命令会搜索根目录/及其子目录下所有.log结尾的文件名。
如果你有多个分区在/下面,那么这个搜索会去搜索所有的被挂载的分区:1 # find / -name "*.log"如果我们使用-xdev选项,那么仅仅会在在当前文件系统中搜索,下面是在xdev的man page上面找到的一段-xdev的定义:∙-xdev Don’t descend directories on other filesystems.下面的命令会在/目录及其子目录下搜索当前文件系统(也就是/挂载的文件系统)中所有以.log结尾的文件,也就是说如果你有多个分区挂载在/下面,下面的搜索不会去搜索其他的分区的(比如/home/)1 # find / -xdev -name "*.log"例11:在同一个命令中使用多个{}linux手册说命令中只能使用一个{},不过你可以像下面这样在同一个命令中使用多个{}1 # find -name "*.txt" cp {} {}.bkup \;注意,在同一个命令中使用这个{}是可以的,但是在不同的命令里就不行了,也就是说,如果你想象下面这样重命名文件是行不通的1 find -name "*.txt" -exec mv {} `basename {} .htm`.html \;例12:使用多个{}实例你可以像下面这样写一个shell脚本去模拟上面那个重命名的例子1 # mv "$1" "`basename "$1" .htm`.html"上面的双引号是为了防止文件名中出现的空格,不加的话会有问题。
然后你把这个shell 脚本保存为mv.sh,你可以像下面这样使用find命令了1 find -name "*.html" -exec ./mv.sh '{}' \;所以,任何情况下你在find命令执行中想使用同一个文件名多次的话,先写一个脚本,然后在find中通过-exec执行这个脚本,把文件名参数传递进去就行,这是最简单的办法例13:将错误重定向到/dev/nul重定向错误输出一般不是什么好的想法。