linux下查找文件命令
上一篇 /
下一篇 2013-01-08 09:20:33
/ 个人分类:Linux
which命令
查找命令所在的位置
[root@www ~]# which [-a] command
选项或参数:
-a :将所有由 PATH 目录中可以找到的命令均列出,而不止第一个被找到的指令名称
范例一:分别用root与一般账号搜寻 ifconfig 这个指令的完整文件名
[root@www ~]# which ifconfig /sbin/ifconfig <==用 root 可以找到正确的执行档名喔!
[root@www ~]# su - vbird <==切换身份成为 vbird 去!
[vbird@www ~]$ which ifconfig
/usr/bin/which: no ifconfig in (/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin :/home/vbird/bin) <==见鬼了!竟然一般身份账号找不到!
# 因为 which 是根据用户所讴定的 PATH 变量内的目录去搜寻可执行文件的!所以,
# 不同的 PATH 讴定内容所找到的指令当然不一样啦!因为 /sbin 不在 vbird 的PATH 中
whereis命令
查找文件
[root@www ~]# whereis [-bmsu] 文件或目录
选项不参数:
-b :只找 binary 格式的档案
-m :只找在说明文件 manual 路径下的档案
-s :只找 source 来源档案
-u :搜寻不在上述三个项目当中其他特殊档案
范例一:请用不同的身份找出 ifconfig 这个档名
[root@www ~]# whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
[root@www ~]# su - vbird
[vbird@www ~]$ whereis ifconfig <==找到同样的结果喔!
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
# 注意看,明明 which 一般使用者找不到的 ifconfig 即可以让 whereis 找到!
# 这是因为系统真的有 ifconfig ,但是使用者的 PATH 所以,未来你找不到某些指令时,先用档案搜寻找找看!
范例二:叧找出跟 passwd 有关『说明文件』档名(man page)
[root@www ~]# whereis -m passwd
passwd: /usr/share/man/man1/passwd.1.gz
/usr/share/man/man5/passwd.5.gz
locate命令
[root@www ~]# locate [-ir] keyword
选项参数:
-i :忽略大小写的差异;
-r :后面可接正规表示法的显示方式
范例一:找出系统中所有与 passwd 相关的档名
[root@www ~]# locate passwd
/etc/passwd /etc/passwd-
/etc/news/passwd.nntp
使用 locate 来寻找数据的时候特别的快,这是因为 locate 寻找的数据是由『已建立的数据库 /var/lib/mlocate/』 里面的数据所搜寻到的,所以不用直接在去硬盘中存取数据
但是数据库的建立默认是在每天执行一次 (每个 distribution 都不同)更新 locate 数据库输入 updatedb 命令就可以了
因为 whereis 和 locate 是利用数据库来搜寻数据,通常我们都是先使用 whereis 或者是 locate 来检查,如果真的找不到了,采用 find 来搜寻
find命令
在硬盘上搜索文件
[root@www ~]# find [PATH] [option] [action]
选项与参数: 1. 与时间有关的选项:共有 -atime, -ctime ,-mtime ,以 -mtime 说明
-mtime n :n 为数字,意义为在 n 天前的『一天内』被修改过内容的档案;
-mtime +n :列出在 n 天前(不含n 天本身)被更动过内容的档案档名;
-mtime -n :列出在 n 天内(含n天本身)被更劢过内容的档案档名。
-newer file :file 为一个存在的档案,列出比 file 还要新的档案档名
范例一:将过去系统上面 24 小时内有更新过的内容 (mtime) 的档案列出
[root@www ~]# find / -mtime 0
# 那个 0 是重点!0 代表目前的时间,所以,从现在开始到 24 小时前,
# 有变过内容的档案都会被列出来!那如果是三天前的 24 小时内
# find / -mtime 3 有变过的档案都被列出的意思!
范例二:搜寻 /home 底下属亍 vbird 的文件
[root@www ~]# find /home -user vbird
范例三:搜寻系统中不属亍任何人的文件
[root@www ~]# find / -nouser
2. 与使用者或用户组名有关的参数:
-uid n :n 为数字,这个数字是用户的账号 ID,亦 UID ,这个 UID 是记录在 /etc/passwd 里面与账号名称对应的数字。
-gid n :n 为数字,这个数字是用户组名的 ID,亦 GID,这个 GID 记录在 /etc/group
-user name :name 为使用者账号名称喔!
-group name:name 为组名喔
-nouser :寻找档案的拥有者不存在 /etc/passwd 的人!
-nogroup :寻找档案的拥有群组不存在于 /etc/group 的档案!
范例三:搜寻 /home 底下属亍 vbird 的档案
[root@www ~]# find /home -user vbird
3. 与档案权限及名称有关的参数:
-name filename:搜寻文件名为 filename 的档案;
-size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的档案。这个 SIZE 的规格有:
c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB 还要大的档案,就是『 -size +50k 』
-type TYPE :搜寻档案的类型为 TYPE 的,类型主要有:一般正规档案 (f), 装置档案 (b, c), 目录 (d), 连结档 (l), socket (s), 及 FIFO (p) 等属性。
-perm mode :搜寻档案权限『刚好等于』 mode 的档案,这个 mode 为类似 chmod 的属性值,举例说, -rwsr-xr-x 的属性为 4755 !
-perm -mode :搜寻档案权限『必须要全部囊括 mode 的权限』的档案,
举例说, 我们要搜寻 -rwxr--r-- ,亦 0744 的档案,使用 -perm -0744, 当一个档案的权限为 -rwsr-xr-x ,亦卲 4755 时,也会被列出来, 因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。
-perm +mode :搜寻档案权限『包含任一 mode 的权限』的档案,
比如,我们搜寻 -rwxr-xr-x ,亦-perm +755 时,但一个文件属性为 -rw------- 也会被列出来,因为他有 -rw.... 的属性存在!
范例五:找出档名为 passwd 这个档案
[root@www ~]# find / -name passwd # 利用这个 -name 可以搜寻档名啊!
范例六:找出 /var 目录下,文件类型为 Socket 的文件有哪些
[root@www ~]# find /var -type s # 例如 socket 与 FIFO 档案,可以用 find /var -type p 或 -type s 来找!
范例七:找出 /etc 底下文件名包含 httpd 的档案
[root@www ~]# find /etc -name '*httpd*'
#查看文件夹的大小
du -h --max-depth=1 ~/ccdata/
du -h --max-depth=0 ~/ccdata/pages/
#查看文件夹下文件的个数
find ~/ccdata/pages -type f | wc -l
find ~/ccdata/pages -type d | wc -l
收藏
举报
TAG: