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:

Jery_wang的个人空间 引用 删除 Jery_wang   /   2013-01-08 12:39:24
3
 

评分:0

我来说两句

日历

« 2024-04-19  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 190039
  • 日志数: 55
  • 图片数: 4
  • 文件数: 3
  • 建立时间: 2010-11-29
  • 更新时间: 2020-12-24

RSS订阅

Open Toolbar