每天一个Linux命令(19)find命令_初识

Linux下find命令在目录结构中搜索文件,并执行指定的操作。

    (1)用法:

用法: find pathname    -option      [-print | -exec | -ok]

        find 路径名           选项参数    [-print | -exec | -ok]

    (2)功能:

功能:用于在文件树种查找文件,并作出相应的处理。

    (3)命令参数:

1) pathname:     find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。

2) -print:       find命令将匹配的文件输出到标准输出。

3) -exec:       find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为‘command‘ { } \;注意{ }和\;之间的空格。

4) -ok:        和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

    (4)选项参数:

1) -name              按照文件名查找文件。

2) -perm              按照文件权限来查找文件。

3) -prune             使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth    选项,那么-prune将被find命令忽略。

    4) -user            按照文件属主来查找文件。

    5) -group          按照文件所属的组来查找文件。

    6) -mtime  -n +n      按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。

7) -nogroup        查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。

8) -nouser                   查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。

9) -newer file1 ! file2    查找更改时间比文件file1新但比文件file2旧的文件。

10) -empty         查找长度为0的文件或文件夹

11) -type          查找某一类型的文件,诸如:

    b                              -块设备文件。

d             - 目录。

c               - 字符设备文件。

p             - 管道文件。

l            - 符号链接文件。

f            - 普通文件。

12) -size n:           [c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。

   13) -depth:           在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。

14) -fstype:          查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。

15) -mount:          在查找文件时不跨越文件系统mount点。

16) -follow:          如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。

17) -cpio:           对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。

18) -regex<范本样式>:      指定字符串作为寻找文件或目录的范本样式

另外,下面三个的区别:

-amin n   查找系统中最后N分钟访问的文件

-atime n  查找系统中最后n*24小时访问的文件

-cmin n   查找系统中最后N分钟被改变文件状态的文件

-ctime n  查找系统中最后n*24小时被改变文件状态的文件

-mmin n   查找系统中最后N分钟被改变文件数据的文件

-mtime n  查找系统中最后n*24小时被改变文件数据的文件

(5)实例:

1)[[email protected] findDir]# find .                          列出当前目录及子目录下所有文件和文件夹

[[email protected] Documents]# touch ./findDir/t1.txt //在当前目录的子目录findDir目录下创建t1.txt文本文件
[[email protected] Documents]# cd findDir
[[email protected] findDir]# ll
总用量 0
-rw-r--r--. 1 root root 0 5月  17 03:50 t1.txt
[[email protected] findDir]# find .
.
./t1.txt
[[email protected] findDir]# cd ../
[[email protected] Documents]# find .
.
./less1
./less2
./head_text
./tail_text
./tempory
./newlocate
./uText
./findDir
./findDir/t1.txt
[[email protected] Documents]# 

用ls命令列出当前目录及子目录下所有文件和文件夹:

[[email protected] Documents]# ls -Rl
.:
总用量 20
drwxr-xr-x. 2 root root  19 5月  17 03:50 findDir
-rw-r--r--. 1 root root 664 5月   9 07:59 head_text
-rw-r--r--. 1 root root  45 5月   9 08:15 less1
-rw-r--r--. 1 root root  57 5月   9 08:16 less2
-rw-r--r--. 1 root root   0 5月  15 18:21 newlocate
-rw-r--r--. 1 root root 259 5月  12 21:53 tail_text
-rw-r--r--. 1 root root 216 5月  12 22:24 tempory
-rw-r--r--. 1 root root   0 5月  15 18:34 uText

./findDir:
总用量 0
-rw-r--r--. 1 root root 0 5月  17 03:50 t1.txt

2)[[email protected] /]# find /home/sunjimeng/Documents -name "*.txt"         在特定目录下找到以.txt结尾的文件

[[email protected] /]# find /home/sunjimeng/Documents -name "*.txt"
/home/sunjimeng/Documents/findDir/t1.txt

3)[[email protected] /]# find /home/sunjimeng/Documents -iname "T*"     在特定目录下找到以T开头的文件或文件夹,但忽略大小写(-i操作)

[[email protected] /]# find /home/sunjimeng/Documents -name "T*"                                       //不忽略
/home/sunjimeng/Documents/findDir/T1.txt
/home/sunjimeng/Documents/findDir/T2.txt
[[email protected] /]# find /home/sunjimeng/Documents -iname "T*"                      //忽略大小写
/home/sunjimeng/Documents/tail_text
/home/sunjimeng/Documents/tempory
/home/sunjimeng/Documents/findDir/t1.txt
/home/sunjimeng/Documents/findDir/T1.txt
/home/sunjimeng/Documents/findDir/T2.txt

4)[[email protected] /]# find /home/sunjimeng/Documents \( -name "*.txt" -o -name "*.pdf" \)  用两个条件来查询文件

[[email protected] /]# touch /home/sunjimeng/Documents/findDir/{p1.pdf,p2.pdf}
[[email protected] /]# find /home/sunjimeng/Documents  \( -name "*.txt" -o -name "*.pdf" \)
/home/sunjimeng/Documents/findDir/t1.txt
/home/sunjimeng/Documents/findDir/T1.txt
/home/sunjimeng/Documents/findDir/T2.txt
/home/sunjimeng/Documents/findDir/p1.pdf
/home/sunjimeng/Documents/findDir/p2.pdf
[[email protected] /]# cd /home/sunjimeng/Documents/findDir
[[email protected] findDir]# find . -name "*.txt" -o -name "*.pdf"
./t1.txt
./T1.txt
./T2.txt
./p1.pdf
./p2.pdf

5)[[email protected] /]# find /home/sunjimeng/Documents ! -name "*.txt"     找寻目录下不是以.txt结尾的文件或目录

[[email protected] /]# find /home/sunjimeng/Documents ! -name  "*.txt"
/home/sunjimeng/Documents
/home/sunjimeng/Documents/less1
/home/sunjimeng/Documents/less2
/home/sunjimeng/Documents/head_text
/home/sunjimeng/Documents/tail_text
/home/sunjimeng/Documents/tempory
/home/sunjimeng/Documents/newlocate
/home/sunjimeng/Documents/uText
/home/sunjimeng/Documents/findDir
/home/sunjimeng/Documents/findDir/p1.pdf
/home/sunjimeng/Documents/findDir/p2.pdf

6)[[email protected] sunjimeng]# find /home/ -path "*cume*"           在指定目录下的后代目录中进行路径匹配,匹配完成后列出匹配目录下的所有文件及文件夹及其子目录及文件。

[[email protected] sunjimeng]# find /home/ -path "*cume*"           //等价于find /home -path "*cume*"
/home/sunjimeng/Documents
/home/sunjimeng/Documents/less1
/home/sunjimeng/Documents/less2
/home/sunjimeng/Documents/head_text
/home/sunjimeng/Documents/tail_text
/home/sunjimeng/Documents/tempory
/home/sunjimeng/Documents/newlocate
/home/sunjimeng/Documents/uText
/home/sunjimeng/Documents/findDir
/home/sunjimeng/Documents/findDir/t1.txt
/home/sunjimeng/Documents/findDir/T1.txt
/home/sunjimeng/Documents/findDir/T2.txt
/home/sunjimeng/Documents/findDir/p1.pdf
/home/sunjimeng/Documents/findDir/p2.pdf
/home/sunjimeng/Document
/home/sunjimeng/Document/newDir
/home/sunjimeng/Document/newDir/text1
/home/sunjimeng/Document/newDir/text2
/home/sunjimeng/Document/text1
/home/sunjimeng/Document/text1/newDir
/home/sunjimeng/Document/text1/newDir/text1
/home/sunjimeng/Document/text1/newDir/text2
/home/sunjimeng/Document/text2
/home/sunjimeng/Document/text2/newDir
/home/sunjimeng/Document/text2/newDir/text1
/home/sunjimeng/Document/text2/newDir/text2
/home/sunjimeng/Document/text3
/home/sunjimeng/Document/text3/text1
/home/sunjimeng/Document/text3/text2
/home/sunjimeng/Document/text4
/home/sunjimeng/Document/text4/text1
/home/sunjimeng/Document/text4/text2
/home/sunjimeng/Document/mytext
/home/sunjimeng/Document/mytext.txt

7)[[email protected] /]# find /home/sunjimeng -regex ".*\(txt\|pdf\)$"            进行字符串匹配

[[email protected] /]# find /home/sunjimeng -regex ".*\(\.txt\|\.pdf\)$"               //原始
[[email protected] /]# find /home/sunjimeng -regex ".*\(.txt\|.pdf\)$"                 //去掉两个斜杠
[[email protected] /]# find /home/sunjimeng -regex ".*\(txt\|pdf\)$"            //把点去了
/home/sunjimeng/.cache/tracker/db-version.txt
/home/sunjimeng/.cache/tracker/db-locale.txt
/home/sunjimeng/.cache/tracker/miner-applications-locale.txt
/home/sunjimeng/.cache/tracker/last-crawl.txt
/home/sunjimeng/.cache/tracker/first-index.txt
/home/sunjimeng/.local/share/Trash/files/test1.txt
/home/sunjimeng/.local/share/Trash/files/test2.txt
/home/sunjimeng/.local/share/Trash/files/test3.txt
/home/sunjimeng/Documents/findDir/t1.txt
/home/sunjimeng/Documents/findDir/T1.txt
/home/sunjimeng/Documents/findDir/T2.txt
/home/sunjimeng/Documents/findDir/p1.pdf
/home/sunjimeng/Documents/findDir/p2.pdf
/home/sunjimeng/Document/mytext.txt

8)[[email protected] /]# find /home/sunjimeng/Documents -type d | p | f | c | l | b 查找特定类型的文件

[[email protected] /]# find /home/sunjimeng/Documents -type d
/home/sunjimeng/Documents
/home/sunjimeng/Documents/findDir
[[email protected] /]# find /home/sunjimeng/Documents -type p
[[email protected] /]# find /home/sunjimeng/Documents -type f
/home/sunjimeng/Documents/less1
/home/sunjimeng/Documents/less2
/home/sunjimeng/Documents/head_text
/home/sunjimeng/Documents/tail_text
/home/sunjimeng/Documents/tempory
/home/sunjimeng/Documents/newlocate
/home/sunjimeng/Documents/uText
/home/sunjimeng/Documents/findDir/t1.txt
/home/sunjimeng/Documents/findDir/T1.txt
/home/sunjimeng/Documents/findDir/T2.txt
/home/sunjimeng/Documents/findDir/p1.pdf
/home/sunjimeng/Documents/findDir/p2.pdf

9)[[email protected] /]# find /home -maxdepth 3 -type f              找指定目录下的普通文件,文件目录深度不超过3

[[email protected] /]# find /home -maxdepth 3 -type f
/home/sunjimeng/.bash_logout
/home/sunjimeng/.bash_profile
/home/sunjimeng/.bashrc
/home/sunjimeng/.config/user-dirs.dirs
/home/sunjimeng/.config/user-dirs.locale
/home/sunjimeng/.config/gnome-initial-setup-done
/home/sunjimeng/.cache/event-sound-cache.tdb.localhost.localdomain.x86_64-redhat-linux-gnu
/home/sunjimeng/.ICEauthority
/home/sunjimeng/.esd_auth
/home/sunjimeng/.bash_history
/home/sunjimeng/Documents/less1
/home/sunjimeng/Documents/less2
/home/sunjimeng/Documents/head_text
/home/sunjimeng/Documents/tail_text
/home/sunjimeng/Documents/tempory
/home/sunjimeng/Documents/newlocate
/home/sunjimeng/Documents/uText
/home/sunjimeng/Document/mytext
/home/sunjimeng/Document/mytext.txt

10)[[email protected] /]# find /home/sunjimeng -mindepth 5 -type d                         找指定目录下的普通文件,文件目录深度不低于5

[[email protected] /]# find /home/sunjimeng -mindepth 5 -type d
/home/sunjimeng/.local/share/evolution/addressbook/trash
/home/sunjimeng/.local/share/evolution/addressbook/system
/home/sunjimeng/.local/share/evolution/addressbook/system/photos
/home/sunjimeng/.local/share/evolution/calendar/trash
/home/sunjimeng/.local/share/evolution/calendar/system
/home/sunjimeng/.local/share/evolution/mail/trash
/home/sunjimeng/.local/share/evolution/memos/trash
/home/sunjimeng/.local/share/evolution/tasks/trash
/home/sunjimeng/.local/share/Trash/files/未命名文件夹

11)[[email protected] /]# find /home/sunjimeng/Documents -atime -2        查找指定时间内修改过的文件

[[email protected] /]# find /home/sunjimeng/Documents -atime -2          //两个以内
/home/sunjimeng/Documents
/home/sunjimeng/Documents/newlocate
/home/sunjimeng/Documents/uText
/home/sunjimeng/Documents/findDir
/home/sunjimeng/Documents/findDir/t1.txt
/home/sunjimeng/Documents/findDir/T1.txt
/home/sunjimeng/Documents/findDir/T2.txt
/home/sunjimeng/Documents/findDir/p1.pdf
/home/sunjimeng/Documents/findDir/p2.pdf
[[email protected] /]# find /home/sunjimeng/Documents -atime -1           //一天以内
/home/sunjimeng/Documents
/home/sunjimeng/Documents/findDir
/home/sunjimeng/Documents/findDir/t1.txt
/home/sunjimeng/Documents/findDir/T1.txt
/home/sunjimeng/Documents/findDir/T2.txt
/home/sunjimeng/Documents/findDir/p1.pdf
/home/sunjimeng/Documents/findDir/p2.pdf

12)[[email protected] /]# find . -perm 777                      查找权限为777的文件及文件夹

[[email protected] /]# find . -perm 777
[[email protected] /]# find /usr/libexec/gcc -perm 777
/usr/libexec/gcc/x86_64-redhat-linux/4.8.2/liblto_plugin.so
/usr/libexec/gcc/x86_64-redhat-linux/4.8.2/liblto_plugin.so.0
/usr/libexec/gcc/x86_64-redhat-linux/4.8.3

    (6)其他:

权限:

读取权限 r = 4

写入权限 w = 2

执行权限 x = 1

775这三个数字代表拥有者,组用户,其他用户的权限。

例如: 7 拥有者有 读取,写入,执行权限

      7 组用户有 读取,写入,执行权限

5 其他用户有 读取,执行权限(4+1 = 5)

777 与 775的区别是:其他用户有写入权限,而775的没有。

  linux下设置777权限和用户权限

  设置www目录的所有文件可写777sudo chmod 777 -R www  (这里-R是继承)

设置www目录下的所有文件权限为user所有

sudo chown -hR user www
exit 

linux下账户的权限是:drwx------ 表示是那些权限?

首先d是代表这个是一个目录文件,rwx是属主权限rw代表可读写x代表可执行,后面三个---是属主同组的权限,如果是---代表没有权限,最后三个是除文件属主组以外所有人的权限,---也是没有权限,所以这个目录只有属主有权限进入,其他人连读的权限也没有,更不用说写入和执行。

时间: 2024-12-25 14:54:21

每天一个Linux命令(19)find命令_初识的相关文章

linux学习一天一个命令(19)[df命令]

df:查看磁盘(默认是KB) -h:加上单位 -i:查看磁盘inode号 -T:文件系统类型

每天一个 Linux 命令(19):find 命令概览

Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限. 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统). 1.命令格式: find pat

每天一个linux命令(19):find 命令概览

Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限. 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统). 1.命令格式: find pat

每天一个linux命令(19):Linux 目录结构

对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面我们就开始了解一下linux目录结构的相关知识. 当 在使用Linux的时候,如果您通过ls –l / 就会发现,在/下包涵很多的目录,比如etc.usr.var.bin ... ... 等目录,而 在这些目录中,我们进去看看,发现也有很多的目录或文件.文件系统在Linux下看上去就象树形结构,所以

每天一个Linux命令(19)--find命令

linux 下 find 命令在目录结构中搜索文件,并执行指定的操作.Linux 下 find 命令提供了相当多的查找条件,功能很强大.由于 find 具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中包含有网络文件系统(NFS),find 命令在该文件系统中同样有效,只要你具有相应的权限.在运行一个非常消耗资源的find 命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会话费很长的时间(譬如30G以上的文件系统).当然你也可以把它调到前

【转】每天一个linux命令(39):grep 命令

原文网址:http://www.cnblogs.com/peida/archive/2012/12/17/2821195.html Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板.如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名.搜索的

【转】每天一个linux命令(44):top命令

原文网址:http://www.cnblogs.com/peida/archive/2012/12/24/2831353.html top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法.top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列

【转载】每天一个Linux命令

每天一个linux命令(1)  : ls 命令 每天一个linux命令(2)  : cd 命令 每天一个linux命令(3)  : pwd 命令 每天一个linux命令(4)  : mkdir 命令 每天一个linux命令(5)  : rm 命令 每天一个linux命令(6)  : rmdir 命令 每天一个linux命令(7)  : mv 命令 每天一个linux命令(8)  : cp 命令 每天一个linux命令(9)  : touch 命令 每天一个linux命令(10): cat 命令

每天一个Linux命令(2): ls

ls命令是linux下最常用的命令.ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单. 通过ls 命令不仅可以查看linux文件夹包含的文件而且可以查看文件权限(包括目录.文件夹.文件权限)查看目录信息等等.ls 命令在日常的linux操作中用的很多! 1. 命令格式: ls [选项] [目录名] 2. 命令功能: 列出目标目录中所有的子目录和文件. 3. 常用参数: -a, –all 列出目录下的所有文件,包括以