摘要
在Linux下、需要很多的命令来实现系统功能的基本调用 ;;;
其中】find 命令就是一个很重要的命令;;;
下面我们就来主要介绍一下find这个命令的使用方法。。。。
find命令简介与使用方法(非常的重要)
find命令的功能:
Linux下find命令在目录结构中搜索文件,并执行指定的操作。
命令格式
find pathname[命令参数] -options[命令选项] [-print -exec -ok ...]
pathname: find命令所查找的目录路径
-print: find命令将匹配的文件输出到标准输出。
例如我们要查找的目录为class3
代码
[wxeast@localhost ~]$ find ./Linux/class3 -print
./Linux/class3
./Linux/class3/proBar
./Linux/class3/Makefile
./Linux/class3/mytest
./Linux/class3/.test.c.swp
./Linux/class3/test.c
./Linux/class3/proBar.c
./Linux/class3/.test.c.swo
-exec:
find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;
之间的空格。
假设我们要将找到为文件使用 【ls】命令来遍历
代码实现
[wxeast@localhost ~]$ find ./Linux/class3 -exec ls {} \;
Makefile mytest proBar proBar.c test.c
./Linux/class3/proBar
./Linux/class3/Makefile
./Linux/class3/mytest
./Linux/class3/.test.c.swp
./Linux/class3/test.c
./Linux/class3/proBar.c
./Linux/class3/.test.c.swo
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
使用上述的代码来演示一下
[wxeast@localhost ~]$ find ./Linux/class3 -ok ls {} \;
< ls ... ./Linux/class3 > ? y
Makefile mytest proBar proBar.c test.c
< ls ... ./Linux/class3/proBar > ? y
./Linux/class3/proBar
< ls ... ./Linux/class3/Makefile > ? y
./Linux/class3/Makefile
< ls ... ./Linux/class3/mytest > ? y
./Linux/class3/mytest
< ls ... ./Linux/class3/.test.c.swp > ? y
./Linux/class3/.test.c.swp
< ls ... ./Linux/class3/test.c > ? y
./Linux/class3/test.c
< ls ... ./Linux/class3/proBar.c > ? y
./Linux/class3/proBar.c
< ls ... ./Linux/class3/.test.c.swo > ? y
./Linux/class3/.test.c.swo
相比于-exec来说的话,,,,-ok更加的安全,,,,但是要是遍历的话(文件过多的话,,,就会很麻烦)
option :
下面的是一些特殊的查找的方法
-name 按照文件名查找文件。
假设查找的是test.c文件
但要是没找的话
系统则什么都不返回
-perm 按照 文件的权限来查找文件
假设在Linux目录下查找的文件权限为 600
[wxeast@localhost ~]$ find ./Linux -perm 600 -print
./Linux/class3/.test.c.swp
[wxeast@localhost ~]$ find ./Linux -perm 600 -exec ls {} \;
./Linux/class3/.test.c.swp
[wxeast@localhost ~]$ find ./Linux -perm 600 -exec ls -l {} \;
-rw-------. 1 wxeast wxeast 12288 Apr 2 08:18 ./Linux/class3/.test.c.swp
[wxeast@localhost ~]$
如果要是没找到的话 ,,则什么都不返回
-user 按照文件属主来查找文件
在主工作目录下 Linux来查找的 属主为 wxeast的文件
[wxeast@localhost ~]$ find ./Linux -user wxeast -print
./Linux
./Linux/class3
./Linux/class3/proBar
./Linux/class3/Makefile
./Linux/class3/mytest
./Linux/class3/.test.c.swp
./Linux/class3/test.c
./Linux/class3/proBar.c
./Linux/class3/.test.c.swo
-group 按照的文件的所属组来查找文件
这种查找方法与 上面的 -user查找的方法是相同的
-mtime -n +n 按照文件内容的更改时间来查找文件, -n表示文件更改时间距现在n天以内, + n表示文件更改时间距现在n天以前。
我们要找的是在3天以内修改文件内容的文件
-atime -n +n 按照文件的执行的时间来查找文件
-ctime -n +n 按照文件的属性更改时间来查找文件
上面两种查找方式 与 mtime的查找方式是相同的。。。
-type 查找某一类型的文件,诸如:
b - 块设备文件。
d -目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件
b - 块设备文件。
d -目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件
假设要在 ~/Linux 路径下找的文件的类型为 d
[wxeast@localhost ~]$ find ~/Linux -type d -exec ls -l {} \;
total 4
drwxrwxr-x. 2 wxeast wxeast 4096 Apr 2 14:36 class3
total 28
-rw-rw-r--. 1 wxeast wxeast 234 Apr 2 08:17 Makefile
-rwxrwxr-x. 1 wxeast wxeast 5996 Apr 2 08:18 mytest
-rwxrwxr-x. 1 wxeast wxeast 5219 Apr 2 08:13 proBar
-rw-rw-r--. 1 wxeast wxeast 276 Apr 2 08:20 proBar.c
-rw-rw-r--. 1 wxeast wxeast 192 Apr 2 14:35 test.c
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
假设要找的文件的大小为 20
[wxeast@localhost ~]$ find . -size 2 -print
./.vimrc
./.config/user-dirs.dirs
./.gconf/apps/gnome-terminal/profiles/Default/%gconf.xml
./.gconf/apps/panel/applets/window_list/prefs/%gconf.xml
./.pulse/e4895a74532f487787d238ce00000027-card-database.tdb
当然了 、、、这些都是最基本的
我们也可以将他们 结合使用
假设我们要找的文件 3天以内修改过文件的内容 文件大小为4 文件的所属组wxeast的文件
[wxeast@localhost ~]$ find -mtime -3 -size 4 -group wxeast -print
./.gconf/desktop/gnome/accessibility/keyboard/%gconf.xml
./.ICEauthority
上面这些大概就是find 指令的大部分用法了 ,,,,如果你要是有什么不了解的问题 ,,可以直接发表评论