文件查找命令find的使用

find 在linux开发中很常用的命令

1.按照文件名称查找文件

     find   /   -name a.txt 查找/根目录下文件名为a.txt的文件

     find /home -name a.txt 查找/home及子目录中文件名为a.txt的文件

     find  ./ -name  *.tar.gz 查找当前目录及子目录中所有后缀为.tar.gz的文件

2.显示查询出符合条件的文件

  find  ./  -type f -printf  "%s\t%p\n"   #查询当前目下文件名称,并按特定格式打印出

 参数详解:

-printf 表示显示打印到当前控制台
-type f 指普通文件(非目录)
%s 文件的大小,单位字节
%k文件的大小,单位K
%p 文件名称

案例1:
find /home/robot -type f -printf "%s\t%p"
案例2:列出系统中最大的10个文件
 find  / -type f -printf "%s\t%p\n"|sort -nr |head -10   #从大到小进行排序,并取前10个文件
结果:(最后10条)
................
...............
find: ‘/usr/share/polkit-1/rules.d’: Permission denied
find: ‘/usr/libexec/initscripts/legacy-actions/auditd’: Permission denied
find: ‘/usr/local/mysql-5.6.27-linux-glibc2.5-x86_64/data/mysql’: Permission denied
find: ‘/usr/local/mysql-5.6.27-linux-glibc2.5-x86_64/data/performance_schema’: Permission denied
find: ‘/usr/local/mysql-5.6.27-linux-glibc2.5-x86_64/data/mytest’: Permission denied
140737486266368 /proc/kcore
197657687       /opt/softwares/hadoop-2.7.2.tar.gz
195624700       /usr/local/mysql-5.6.27-linux-glibc2.5-x86_64/lib/libmysqld.a
153512879       /opt/softwares/jdk-7u79-linux-x64.gz
148084616       /usr/local/mysql-5.6.27-linux-glibc2.5-x86_64/lib/libmysqld-debug.a
134217728       /sys/devices/pci0000:00/0000:00:0f.0/resource1_wc
134217728       /sys/devices/pci0000:00/0000:00:0f.0/resource1
134217728       /opt/modules/hadoop-2.7.2/data/tmp/dfs/data/current/BP-1411930001-192.168.1.102-1507087800520/current/finalized/subdir0/subdir0/blk_1073741827
134217728       /opt/modules/hadoop-2.7.2/data/tmp/dfs/data/current/BP-1411930001-192.168.1.102-1507087800520/current/finalized/subdir0/subdir0/blk_1073741825
106070960       /usr/lib/locale/locale-archive

注意事项:用find查找文件时,find的能够搜索查询的目录只是当前用户的权限目录,所以有些非当前用户的目录是检索不到的,如果想查全部目录,则要用root用户登录查找。

你可能感兴趣的:(shell编程)