Linux文件搜索命令

1、which命令

  • 命令解释

  which - shows the full path of (shell) commands.(显示(shell)命令的完整路径)
  在PATH变量指定的路径中,搜索某个系统命令位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

  • 命令语法

  which [选项] [–] 程序名 […]

  • 命令选项

  没有常用选项哦!

  • 实例

  查找ls命令的位置
[root@localhost ~]# which ls
alias ls='ls --color=auto'    //命令别名
        /usr/bin/ls    //ls命令的绝对路径

2、whereis命令

  • 命令解释

  whereis - locate the binary, source, and manual page files for a command(查找命令的二进制、源代码和手册文件)

  • 命令语法

  whereis [选项] [-BMS 目录… -f] 命令名…

  • 命令选项

选 项 作 用
-b 只查找二进制文件
-B 只在设置的目录下查找二进制文件
-m 只查找帮助手册文件
-M 只在设置的目录下查找帮助手册文件
-s 只查找原始代码文件
-S 只在设置的目录下查找原始代码文件
-f 不显示文件名前的路径名称
  • 实例

  ① 查找ls命令的二进制文件和帮助手册文件
[root@localhost ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
//输出信息从左到右:命令名、bash路径、bash的man手册页路径

  ② 只查找ls命令的二进制文件
[root@localhost ~]# whereis -b ls
ls: /usr/bin/ls

3、locate命令

  • 命令解释

  locate - find files by name(按名称查找文件)
  查找速度快模糊查找依赖于事先构建好的索引库,但查找并不是实时的,以系统周期更新数据库为准,同时也可以手动更新数据库(updatedb)。

tips:locate需要安装的哦!使用命令:yum install mlocate

  • 命令语法

  locate [选项]… 模式…

  • 命令选项

选 项 作 用
-b 只匹配路径中的基名
-c 统计出共有多少个符合条件的文件
  • 实例

  ① 更新数据库
[root@localhost ~]# updatedb

  ② 查找/etc/sysconfig/目录下所有以net开头的文件
[root@localhost ~]# locate  /etc/sysconfig/net
/etc/sysconfig/netconsole
/etc/sysconfig/network
/etc/sysconfig/network-scripts
/etc/sysconfig/network-scripts/.ifcfg-ens33.swp
/etc/sysconfig/network-scripts/ifcfg-ens33
/etc/sysconfig/network-scripts/ifcfg-lo
...

4、find命令

  • 命令解释

  find - search for files in a directory hierarchy(在目录层次结构中搜索文件)
  查找速度慢实时精确查找,通过遍历指定路径下的文件系统层级结构完成查找。

  • 命令语法

  find [起始查找路径] [选项(查找条件)] [ 处理动作 ]

  起始查找路径:指定具体的搜索起始路径,默认为当前目录;
  查找条件:指定查找的标准,大小、文件名、类型等,默认是指定路径下的所有文件;
  处理动作:对符合查找条件的文件做出的操作,例如:cp、rm等,默认为输出到标准输出;

  • 命令选项

  ① 根据文件名查找(精确查找)
选 项 作 用
-name 根据文件名搜索
-iname 根据文件名搜索,不区分大小写
-inode 根据iNode节点号搜索
  ②根据文件从属关系查找
选 项 作 用
-uid UID 查找所有者是指定 ID 的文件
-gid GID 查找属组是指定 ID 的文件
-user 用户名 查找所有者是指定用户的文件
-group 组名 查找属组是指定用户组的文件
-nouser 查找没有所有者的文件
-nogroup 查找没有属组的文件
  ③ 根据文件类型查找

  -type TYPE

TYPE 作 用
f 普通文件
d 目录文件
l 符号链接文件
b 块设备文件
c 字符设备文件
p 管道文件
s 套接字文件
  ④ 根据文件大小查找

  -size [ + | - ] n    常用单位:k、M、G;

[ + |/ - ] n 的含义 作 用
n ( n–1 , n ]
-n [ 0 , n–1 ]
+n ( n , ∞ )
  ⑤ 根据修改时间查找
  Ⅰ、以"天"为单位
选 项 作 用
-atime [ + | - ] 天数 根据文件访问时间搜索
-mtime [ + | - ] 天数 根据文件修改时间搜索
-ctime [ + | - ] 天数 根据文件改变时间搜索
  Ⅱ、以"分钟"为单位
选 项 作 用
-amin [ + | - ] 分钟数 根据文件访问时间搜索
-mmin [ + | - ] 分钟数 根据文件修改时间搜索
-cmin [ + | - ] 分钟数 根据文件改变时间搜索

tips改变时间,表示我们最后一次对文件属性改变的时间,包括权限,大小,属性等等。

   [ + | - ] 时间 的含义比较难理解,下面重点解释一下:

[ + | - ] 时间 的含义 作 用
-n n天内修改的文件
n n ~ n+1那天修改的文件
+n n天之前修改的文件
  ⑥ 根据权限查找

  -perm [ / | - ] mode

[ / | - ] mode 的含义 作 用
mode 精确匹配,查找文件权限刚好等于"权限模式"的文件
-mode 查找文件权限全部包含"权限模式"的文件,即任何高于此权限的文件
/mode 查找文件权限包含"权限模式"的任意一个权限的文件,即只要包含任意一个指定权限
  ⑦ 根据目录层级查找
选 项 作 用
-depth 从指定目录下最深层的子目录开始查找
-maxdepth levels 设置查找范围的最大目录层级
-mindepth levels 设置查找范围的最小目录层级
  ⑧ 逻辑运算符
选 项 作 用
-a 逻辑与(and)
-o 逻辑或(or)
-not 或 ! 逻辑非(not)
  • 处理动作

动 作 作 用
-print 输出至标准输出,默认动作
-ls 输出文件的详细信息,相当于对查找到的文件执行"ls -l"命令
-delete 删除查到的文件
-fls /PATH/TO/SOMEFILE 把查找到的所有文件的长格式信息保存至指定文件中
-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND表示的命令,每次操作都由用户进行确认
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND表示的命令,无需确认

tips:find传递查找到的文件路径至后面的命令时,是先查找出所有符合的文件路径,并一次性传递给后面的命令。但是有些命令不能接受过长的参数,此时命令执行会失败,可以使用这种方法规避此问题find | xargs COMMAND

  • 实例

  ① 查找/var目录下属主不为root,且文件大小大于1K的文件;
[root@localhost /]# find /var ! -user root -a -size +1k -ls
  ② 查找系统中,没有属主或没有属组的文件,且最近5分钟被访问过;
[root@localhost /]# find / \( -nouser -o -nogroup \) -a -amin -5
  ③ 查找系统中所有用户均没有读写权限的文件,并且拷贝至/tmp目录;
[root@localhost ~]# find / ! -perm /666 -exec cp /tmp {} \;
  ④ 查找/etc目录下大于1M,且为普通文件或管道文件的所有文件,并且列出文件的所有详细信息及iNode节点号;
[root@localhost ~]# find /etc/ -size +1M -a \( -type f -o -type p \) | xargs ls -li {} /;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章