文件查找:
locate:
非实时,模糊匹配,查找是根据全系统文件数据库进行的;
#updatedb,手动生成文件数据库
速度快,用的不是太多
find:
实时
精确
支持众多查找标准
遍历指定目录中的所有文件完成查找,速度慢;
格式:find 查找路径查找标准查找到以后的处理动作
查找路径:默认为当前目录
查找标准:默认为指定路径下的所有文件
处理动作:默认为显示
匹配标准:
-name'FILENAME':对文件名作精确匹配,支持通配符*,?,[]
例:find /etc/-name 'passwd'
-iname'FILENAME':文件名匹配不区分大小写
-regexPATTERN:基于正则表达式实现文件名查找
-userUSERNAME:根据文件属主来查找
-groupGROUPNAME:根据属组查找
-uidUID:根据uid查找
-gidGID:根据GID查找
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件
-type
f:普通文件
d
c
b
l
p
s
-size
[+|-]#k:大于或小于#k的文件
#M
#G
例:find /tmp -size 2M--->查找所有大于1M小于2M的文件
find/tmp -size +2M--->查找文件大于2M的文件
组合条件:
-a:与
-o:或
-not:非
例:find /tmp-nouser -a -type d--->查找没有属主且是类型为目录的
find/tmp -not -type s -a -not -type d--->查找类型不是目录且不是socket的文件
find./ -not \(-user user1 -o -user user2\)--->查找属主不是user1和user2的文件
根据修改时间查找:
-mtime:修改的
-ctime:改变的
-atime:访问的
[+|-]#:过去的#天访问过的文件
-mmin
-cmin
-amin
[+|-]#:过去的#分钟访问过的文件
例:
find./ -atime -5 ----> 5天之内访问过的时间
根据执行权限查找:
-permmode
/mode
-mode
例:find ./-perm 644--->根据权限进行精确匹配
find./ -perm /644--->只要有一位权限匹配到都行
find./ -perm -644--->文件权限能完全包含此mode时才能显示
644:rw-r--r--
755:rwxr-xr-x (755完全包含644)
find的动作(查找后做什么处理)
-print:显示
-ls:类似ls -l的形式显示每一个文件的详细
-ok COMMAND {} \;--->找到文件后执行COMMAND命令,{}表示找到的文件,必须 后加\,最后加‘;’结束。每一次操作都需要用户确认
-exec COMMAND {} \;--->类似。但每一次操作不需要用户确认
例:find ./-type d -ok chmod +x {} \; 所有目录都加上可执行权限
find./ -perm -020 -exec mv {} {}.new \; 把有读权限的文件的文件名改为"文件 名.new"
find./ -name "*.sh" -a -perm -111 -exec chmod o-x {} \; 找到.sh结尾的且有可执 行权限的文件,把其它用户的可执行权限去掉
which:
which命令的作用是在PATH变量指定的路径中搜索某个系统命令的位置并且返回第一个搜索结果。也就是说使用which命令就可以看到某个系统命令是否存在以及执行的到底是哪一个位置的命令。如果你想知道你的命令放在那里了那么可以用which去查找一下。当然你需要注意的是它是在PATH指定的路径中普通用户和超级用户的PATH是不一样的(在没做修改的情况下
格式:which 可执行文件名称
选项
-n 指定文件名长度指定的长度必须大于或等于所有文件中最长的文件名。
-p 与-n参数相同但此处的包括了文件的路径。
-a 将PATH目录中可以找到指令均列出不止第一个而已。
-w 指定输出时栏位的宽度。
-V 显示版本信息
例:
查找普通个命令路径
$which pwd
/bin/pwd
查找有别名的命令时会列出具体的别名信息
$which ls
aliasls='ls --color=tty'
/bin/ls
查找命令不在普通用户的PATH中如ifconfig命令
$which ifconfig
/usr/bin/which:no ifconfig in(/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/atong/bin)
Bash内建命令无法查找到如cd命令
$which cd
/usr/bin/which:no cd in(/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:
whereis:
whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。whereis 程序还具有搜索源代码、指定备用搜索路径和搜索不寻常项的能力。
格式:whereis [-bmsu] [BMS 目录名 -f ] 文件名
选项:
-b 定位可执行文件。
-m 定位帮助文件。
-s 定位源代码文件。
-u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
-B 指定搜索可执行文件的路径。
-M 指定搜索帮助文件的路径。
-S 指定搜索源代码文件的路径。
例:
将和svn文件相关的文件都查找出来
# whereis svn
svn: /usr/bin/svn /usr/local/svn /usr/share/man/man1/svn.1.gz
只将二进制文件查找出来
# whereis -b svn
svn: /usr/bin/svn /usr/local/svn
将帮助文件查找出来
# whereis -m svn
svn: /usr/share/man/man1/svn.1.gz
将源码查找出来
# whereis -s svn
svn: