如果你想在Linux系统众多的文件中找到你想要的文件,那么find命令就是你的法宝
1. 简单的认识一下find
find命令用来在指定目录下查找文件,任何位于参数之前的字符串都将被视为欲查找的目录名。 如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。 并且将查找到的子目录和文件全部进行显示。
2. find基本语法
find 指定路径 [选项] 搜索目录
注意:
~表示用户所在目录
.表示当前目录
/表示根目录
示例: (1)查找当前目录下有没有DM文件 在home目录下有这些文件
[root@localhost100 home]
./DM
(2)查找用户所在目录下有没有DM文件
[root@localhost100 home]
[root@localhost100 ~]
总用量 4
drwxr-xr-x. 2 root root 4096 5月 17 09:53 shelltest
[root@localhost100 ~]
(2)查找用户根目录下有没有DM文件
[root@localhost100 ~]
[root@localhost100 /]
总用量 92
lrwxrwxrwx. 1 root root 7 3月 10 12:08 bin -> usr/bin
dr-xr-xr-x. 6 root root 4096 4月 12 17:50 boot
drwxr-xr-x. 19 root root 3340 5月 26 16:25 dev
drwxr-xr-x. 144 root root 12288 5月 26 16:25 etc
drwxr-xr-x. 8 root root 4096 5月 12 11:44 home
lrwxrwxrwx. 1 root root 7 3月 10 12:08 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 3月 10 12:08 lib64 -> usr/lib64
drwx------. 2 root root 16384 3月 10 12:07 lost+found
drwxr-xr-x. 2 root root 4096 4月 11 2018 media
drwxr-xr-x. 2 root root 4096 4月 11 2018 mnt
drwxr-xr-x. 3 root root 4096 4月 12 17:23 newdisk
drwxr-xr-x. 10 root root 4096 5月 24 15:02 opt
dr-xr-xr-x. 280 root root 0 5月 26 16:25 proc
dr-xr-x---. 8 root root 4096 5月 26 16:27 root
drwxr-xr-x. 44 root root 1280 5月 26 16:28 run
lrwxrwxrwx. 1 root root 8 3月 10 12:08 sbin -> usr/sbin
drwxr-xr-x. 2 root root 4096 4月 11 2018 srv
dr-xr-xr-x. 13 root root 0 5月 26 16:25 sys
drwxrwxrwt. 47 root root 20480 5月 26 16:28 tmp
drwxr-xr-x. 13 root root 4096 3月 10 12:08 usr
drwxr-xr-x. 21 root root 4096 3月 10 12:27 var
[root@localhost100 /]
/home
/home/logonuser/.local/share/gvfs-metadata/home
/root/.local/share/gvfs-metadata/home
[root@localhost100 /]
可以采用命令 find -help和man find查看它详细解释
[root@localhost100 home]
用法: 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 EXPR2
EXPR1 -o EXPR2 EXPR1 -or EXPR2 EXPR1 , EXPR2
positional options (always true): -daystart -follow -regextype
normal options (always true, specified before other expressions):
-depth --help -maxdepth LEVELS -mindepth LEVELS -mount -noleaf
--version -xautofs -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 文本
操作: -delete -print0 -printf 格式 -fprintf 文件 格式 -print
-fprint0 文件 -fprint 文件 -ls -fls 文件 -prune -quit
-exec 命令 ; -exec 命令 {} + -ok 命令 ;
-execdir 命令 ; -execdir 命令 {} + -okdir 命令 ;
按照文件名搜索
find 命令是完全匹配的,必须和搜索关键字一模一样才会列出 搜索的文件名必须和你的搜索内容一致才能找到文件,若只是包含搜索内容,就不会找到文件
-name: 按照文件名搜索;
-iname: 按照文件名搜索,不区分文件名大小;
-inum: 按照 inode 号搜索;
logonuser目录下文件内容
(1)如果只知道文件名,不知道文件在哪里放 例:happy.txt
[root@localhost100 /]
/home/logonuser/happy.txt
[root@localhost100 /]
(2)如果想要按文件名不区分大小写找到目录 Apply
[root@localhost100 /]
/home/logonuser/Apply
[root@localhost100 /]
(3)按照 inode号(索引节点)搜索文件,Linux内部使用 inode号来识别文件 查看文件inode号
[root@localhost100 logonuser]
546886 banana.txt
[root@localhost100 logonuser]
./banana.txt
[root@localhost100 logonuser]
(4)查找文件名以stu开头的文件
[root@localhost100 /]
/home/logonuser/study.tar.gz
/run/media/root/CentOS 7 x86_64/Packages/stunnel-4.56-6.el7.x86_64.rpm
/usr/lib64/perl5/gnu/stubs-64.ph
/usr/lib64/perl5/gnu/stubs.ph
/usr/bin/stund
/usr/bin/stunbdc
/usr/share/augeas/lenses/dist/stunnel.aug
/usr/include/gnu/stubs-64.h
/usr/include/gnu/stubs.h
/usr/src/kernels/3.10.0-1160.el7.x86_64/include/config/pci/stub.h
/usr/src/kernels/3.10.0-1160.el7.x86_64/include/config/efi/stub.h
/usr/src/kernels/3.10.0-1160.el7.x86_64/include/config/i2c/stub.h
/usr/lib/x86_64-redhat-linux6E/include/gnu/stubs-64.h
/usr/lib/x86_64-redhat-linux6E/include/gnu/stubs.h
/etc/selinux/targeted/active/modules/100/stunnel
[root@localhost100 /]
(3)查找/home/logonuser目录下文件名后缀是.txt的文件
[root@localhost100 /]
[root@localhost100 logonuser]
/home/logonuser/test/fruits/apple.txt
/home/logonuser/test/zero/cat/blackcat.txt
/home/logonuser/test/zero/cat/redcat.txt
/home/logonuser/learn/oneday/a.txt
/home/logonuser/.cache/tracker/db-version.txt
/home/logonuser/.cache/tracker/db-locale.txt
/home/logonuser/.cache/tracker/locale-for-miner-apps.txt
/home/logonuser/.cache/tracker/first-index.txt
/home/logonuser/.cache/tracker/last-crawl.txt
/home/logonuser/.cache/tracker/locale-for-miner-user-guides.txt
/home/logonuser/.cache/tracker/parser-sha1.txt
/home/logonuser/banana.txt
/home/logonuser/happy.txt
/home/logonuser/mydata.txt
/home/logonuser/info.txt
[root@localhost100 logonuser]
(4)查找文件名称中包含anan的文件
[root@localhost100 logonuser]
/home/logonuser/banana.txt
[root@localhost100 logonuser]
按照文件大小搜索
find 目录 -size n
文件使用了 n 单位个存储单元。
n后面加上b或不写单位 表示默认的单位是512字节的块,则按照 512Byte搜索
n后面加上c 表示按字节搜索
n后面加上k 表示按千字节(kB)搜索
n后面加上w 表示按双字节(中文)搜索
n后面加上M 表示按MB搜索
n后面加上G 表示按GB搜索
可以使用命令:man find 查看find手册 (1)在当前目录下寻找一个大小为43字节的文件
[root@localhost100 learn]
总用量 1496
-rw-r--r--. 1 root root 43 4月 11 17:22 date100.log
-rw-r--r--. 1 root root 1233012 6月 6 14:54 mycal
-rw-r--r--. 1 root root 273136 6月 6 14:54 mydtate
-rwxr--r--. 1 root root 71 4月 11 10:38 mysh.sh
drwxr-xr-x. 2 root root 4096 4月 1 11:25 oneday
[root@localhost100 learn]
./date100.log
[root@localhost100 learn]
(2)在当前目录下寻找一个比273136字节小的文件
[root@localhost100 learn]
.
./date100.log
./oneday
./oneday/a.txt
./mysh.sh
(3)在当前目录下寻找一个比273136字节大的文件
[root@localhost100 learn]
./mycal
./mydtate
[root@localhost100 learn]
(4)在当前目录下寻找一个比1MB大的文件
[root@localhost100 learn]
4.0K date100.log
1.2M mycal
272K mydtate
4.0K mysh.sh
4.0K oneday
[root@localhost100 learn]
./mycal
[root@localhost100 learn]
按照修改时间搜索
find 目录 -选项 n
atime对文件的访问时间
mtime对文件的数据修改时间
ctime对文件的状态修改时间
time 选项的默认单位是天,而 min 选项的默认单位是分钟。
(1)查找5天内天访问过的文件
[root@localhost100 logonuser]
(2)查找10-11天修改过的文件
[root@localhost100 logonuser]
总用量 44
drwxr-xr-x. 2 root root 4096 5月 26 17:29 Apply
-rwxr-xr-x. 1 root root 15 4月 6 15:28 banana.txt
-rwxrwxrwx. 1 logonuser logonuser 1204 4月 2 12:14 happy.txt
-rw-r--r--. 1 root root 196 4月 1 14:43 info.txt
drwxrwxrwx. 3 logonuser logonuser 4096 4月 11 17:16 learn
-rw-r--r--. 1 root root 340 4月 2 15:35 learn.zip
-rw-r--r--. 1 root root 24 6月 6 16:07 mydata.txt
-rw-r--r--. 1 root root 215 4月 11 10:22 mydate
-rw-r--r--. 1 root root 223 4月 2 15:51 myinfo.tar.gz
lrwxrwxrwx. 1 root root 5 4月 6 11:22 myopt -> /opt/
-rw-r--r--. 1 root root 922 4月 2 15:53 study.tar.gz
drwxr-xr-x. 4 root root 4096 4月 6 16:10 test
[root@localhost100 logonuser]
./Apply
[root@localhost100 logonuser]
(3)查找10-11天对文件状态修改过的文件
[root@localhost100 logonuser]
./Apply
[root@localhost100 logonuser]
按照权限搜索
perm 权限模式:査找文件权限刚好等于"权限模式"的文件
perm -权限模式:査找文件权限全部包含"权限模式"的文件
perm /权限模式:査找文件权限包含"权限模式"的任意一个权限的文件
(1)査找文件权限刚好等于777的文件
[root@localhost100 logonuser]
总用量 44
drwxr-xr-x. 2 root root 4096 5月 26 17:29 Apply
-rwxr-xr-x. 1 root root 15 4月 6 15:28 banana.txt
-rwxrwxrwx. 1 logonuser logonuser 1204 4月 2 12:14 happy.txt
-rw-r--r--. 1 root root 196 4月 1 14:43 info.txt
drwxrwxrwx. 3 logonuser logonuser 4096 4月 11 17:16 learn
-rw-r--r--. 1 root root 340 4月 2 15:35 learn.zip
-rw-r--r--. 1 root root 24 6月 6 16:07 mydata.txt
-rw-r--r--. 1 root root 215 4月 11 10:22 mydate
-rw-r--r--. 1 root root 223 4月 2 15:51 myinfo.tar.gz
lrwxrwxrwx. 1 root root 5 4月 6 11:22 myopt -> /opt/
-rw-r--r--. 1 root root 922 4月 2 15:53 study.tar.gz
drwxr-xr-x. 4 root root 4096 4月 6 16:10 test
--w-------. 1 root root 0 6月 6 16:18 yy.txt
[root@localhost100 logonuser]
./learn
./happy.txt
./myopt
[root@localhost100 logonuser]
(2)査找文件权限全部包含w的文件
[root@localhost100 logonuser]
总用量 44
drwxr-xr-x. 2 root root 4096 5月 26 17:29 Apply
-rwxr-xr-x. 1 root root 15 4月 6 15:28 banana.txt
-rwxrwxrwx. 1 logonuser logonuser 1204 4月 2 12:14 happy.txt
-rw-r--r--. 1 root root 196 4月 1 14:43 info.txt
drwxrwxrwx. 3 logonuser logonuser 4096 4月 11 17:16 learn
-rw-r--r--. 1 root root 340 4月 2 15:35 learn.zip
-rw-r--r--. 1 root root 24 6月 6 16:07 mydata.txt
-rw-r--r--. 1 root root 215 4月 11 10:22 mydate
-rw-r--r--. 1 root root 223 4月 2 15:51 myinfo.tar.gz
lrwxrwxrwx. 1 root root 5 4月 6 11:22 myopt -> /opt/
-rw-r--r--. 1 root root 922 4月 2 15:53 study.tar.gz
drwxr-xr-x. 4 root root 4096 4月 6 16:10 test
--w-------. 1 root root 0 6月 6 16:18 yy.txt
[root@localhost100 logonuser]
./learn
./happy.txt
./myopt
[root@localhost100 logonuser]
(3)査找文件权限包含w的任意一个权限的文件
[root@localhost100 fruits]
总用量 0
-r--------. 1 root root 0 6月 6 16:28 aa.txt
-rwxr-xr-x. 1 logonuser fruits 0 4月 6 15:33 apple.txt
-rw-r--r--. 1 logonuser fruits 0 4月 6 15:52 pear
[root@localhost100 fruits]
.
./pear
./apple.txt
[root@localhost100 fruits]
按照所有者和所属组搜索
-uid 用户 ID:按照用户 ID 査找所有者是指定 ID 的文件
-gid 组 ID:按照用户组 ID 査找所属组是指定 ID 的文件
-user 用户名:按照用户名査找所有者是指定用户的文件
-group 组名:按照组名査找所属组是指定用户组的文件
-nouser:査找没有所有者的文件
[root@localhost100 fruits]
总用量 0
-r--------. 1 root root 0 6月 6 16:28 aa.txt
-rwxr-xr-x. 1 logonuser fruits 0 4月 6 15:33 apple.txt
-rw-r--r--. 1 logonuser fruits 0 4月 6 15:52 pear
[root@localhost100 fruits]
.
./aa.txt
[root@localhost100 fruits]
按照文件类型搜索
-type d:查找目录
-type f:查找普通文件
-type l:查找软链接文件
[root@localhost100 logonuser]
总用量 44
-r--------. 1 root root 0 6月 6 16:25 aa.txt
drwxr-xr-x. 2 root root 4096 5月 26 17:29 Apply
-rwxr-xr-x. 1 root root 15 4月 6 15:28 banana.txt
-rwxrwxrwx. 1 logonuser logonuser 1204 4月 2 12:14 happy.txt
-rw-r--r--. 1 root root 196 4月 1 14:43 info.txt
drwxrwxrwx. 3 logonuser logonuser 4096 4月 11 17:16 learn
-rw-r--r--. 1 root root 340 4月 2 15:35 learn.zip
-rw-r--r--. 1 root root 24 6月 6 16:07 mydata.txt
-rw-r--r--. 1 root root 215 4月 11 10:22 mydate
-rw-r--r--. 1 root root 223 4月 2 15:51 myinfo.tar.gz
lrwxrwxrwx. 1 root root 5 4月 6 11:22 myopt -> /opt/
-rw-r--r--. 1 root root 922 4月 2 15:53 study.tar.gz
drwxr-xr-x. 4 root root 4096 6月 6 16:28 test
--w-------. 1 root root 0 6月 6 16:18 yy.txt
[root@localhost100 logonuser]
./myopt
[root@localhost100 logonuser]
逻辑运算符
a:and逻辑与
-o:or逻辑或
-not:not逻辑非
(1)在当前目录下搜索大于71,并且文件类型是目录的文件
[root@localhost100 learn]
总用量 1516
-rw-r--r--. 1 root root 43 4月 11 17:22 date100.log
-rw-r--r--. 1 root root 1252994 6月 6 16:37 mycal
-rw-r--r--. 1 root root 277565 6月 6 16:37 mydtate
-rwxr--r--. 1 root root 71 4月 11 10:38 mysh.sh
drwxr-xr-x. 2 root root 4096 4月 1 11:25 oneday
[root@localhost100 learn]
.
./oneday
[root@localhost100 learn]
(2)在当前目录下搜索文件名是mycal或者是oneday的
[root@localhost100 learn]
./mycal
./oneday
[root@localhost100 learn]
|