加入收藏 | 设为首页 | 会员中心 | 我要投稿 天瑞地安资讯网_保定站长网 (https://www.52baoding.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux 系统下 查找文件 命令总结,这个很哇塞!

发布时间:2022-10-21 12:36:46 所属栏目:Linux 来源:
导读:  查命令绝对路径:

  which用于查找并显示给定命令的绝对路径,环境变量中PATH参数也可以被查出来。

  [root@localhost?~]#?which?bash
  /usr/bin/bash

  [root@localhost?~]#?which?ls
 
  查命令绝对路径:
 
  which用于查找并显示给定命令的绝对路径,环境变量中PATH参数也可以被查出来。
 
  [root@localhost?~]#?which?bash
  /usr/bin/bash
 
  [root@localhost?~]#?which?ls
  alias?ls='ls?--color=auto'
  ????/usr/bin/ls
  寻找特定文件:
 
  whereis命令用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径,该命令只能用于程序名的搜索
 
  [root@localhost?~]#?whereis?--help
 
  语法格式:[ whereis [选项]?文件名?]
 
  ????????-b??????????????#只找二进制文件
  ????????-m??????????????#只找man文档
  ????????-s??????????????#只找源代码
  使用 whereis -b 命令找二进制文件,与帮助手册。
 
  [root@localhost?~]#?whereis?-b?ifconfig
  ifconfig:?/usr/sbin/ifconfig
 
  [root@localhost?~]#?whereis?-m?ifconfig
  ifconfig:?/usr/share/man/man8/ifconfig.8.gz
  缓存查找文件:
 
  locate 搜索一个数据库/var/lib/mlocatedb,这个数据库中含有本地所有文件信息,Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件,为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库,updatedb命令会根据/etc/updatedb.conf来更新文件.
 
  [root@localhost?~]#?yum?install?-y?mlocate
  [root@localhost?~]#?locate?--help
 
  语法格式:[ locate [选项]?文件名?]
 
  ????????-d?目录????????#指定数据库所在的目录
  ????????-i?????????????#忽略大小写差异
  ????????-r?????????????#后面接正则表达式
  使用 locate 命令查询一个文件.
 
  [root@localhost?~]#?updatedb?
  [root@localhost?~]#?locate?/etc/passwd
  /etc/passwd
  /etc/passwd-
  遍历文件查找:
 
  find 命令可以说是最重要的查找命令了linux命令系统,该命令参数较多。
 
  [root@localhost?~]#?find?--help
 
  语法格式:[ find [目录]?[属性]?文件名?]
 
  ????????-name?????????#按文件名查找
  ????????-size?????????#根据大小查找
  ????????-user?????????#根据属主查找
  ????????-perm?????????#根据权限查找
  ????????-type?????????#根据类型查找
  ????????-time?????????#按时间查找
  ????????-inum?????????#根据i节点查询
  ????????-exec?????????#查找后执行命令
  -name 按文件名查找:
 
  常用查询通配符
 
  \*?????#匹配任意一个或多个字符
  ??????#匹配任意一个字符
  []?????#指定范围,外侧加引号
  查找/var/目录下,以.log结尾的文件.
 
  [root@localhost?~]#?find?/var/?-name?"*.log"
  /var/log/tuned/tuned.log
  /var/log/audit/audit.log
  /var/log/anaconda/X.log
  /var/log/anaconda/program.log
  ....省略....
  查找/root/目录下,以[1-3之间],结尾是.txt的文件
 
  linux系统vi命令详解_linux命令系统_linux命令查看系统
 
 
  [root@localhost?~]#?ls
  1.txt??2.txt??3.txt??Catalog??File
 
  [root@localhost?~]#?find?/root/?-name?"[1-3].txt"
  /root/1.txt
  /root/2.txt
  /root/3.txt
  查找/etc/目录下,开头是6个任意字符的文件
 
  [root@localhost?~]#?find?/etc/?-name?"??????"
  /etc/grub.d
  /etc/grub.d/README
  /etc/shells
  /etc/init.d
  ....省略....
  -size 根据大小查找
 
  单位是?block?数据块??一块是512字节
  1M?->?1024k?->?2048?块??(1块是0.5k?也就是512字节)
  100M?->?102400k?->?204800块
  查找/etc/目录下,小于10k的文件
 
  root@localhost?~]#?find?/etc/?-size?-10k
  /etc/crypttab
  /etc/.pwd.lock
  /etc/environment
  ....省略....
  查找/etc/目录下,大于1M的文件
 
  [root@localhost?~]#?find?/etc/?-size?+1M???#查询大于1M的文件
  /etc/udev/hwdb.bin
  /etc/selinux/targeted/active/policy.kern
  /etc/selinux/targeted/contexts/files/file_contexts.bin
  /etc/selinux/targeted/policy/policy.31
  ....省略....
 
  #注意:+-号如果没有,是精确到这么大,通常都会带上+或-号表示一个范围.
  -user 根据属主与权限查找
 
  在/root目录中查找属于wang用户的文件
 
  [root@localhost?~]#?find?/root/?-user?wang
  /root/1.txt
  /root/2.txt
  /root/3.txt
  #注意:系统中要存在该用户,否则会报错误.
  查找/boot/目录中权限是644的文件
 
  [root@localhost?~]#?find?/boot/?-perm?0644
  /boot/grub2/device.map
  /boot/grub2/i386-pc/gcry_rmd160.mod
  /boot/grub2/i386-pc/acpi.mod
  /boot/grub2/i386-pc/gcry_rsa.mod
  ....省略....
  -type 根据类型查找
 
  -type?f?二进制文件(普通文件)
  -type?l 软链接文件
  -type?d?目录
  查找/usr/bin/目录下,类型是二进制文件.
 
  [root@localhost?~]#?find?/usr/bin/?-type?f
  /usr/bin/cp
  /usr/bin/gzip
  /usr/bin/alias
  /usr/bin/csplit
  /usr/bin/bash
  ....省略....
  -time 按时间查找
 
  按天数???ctime??atime??mtime
  按分钟???cmin???amin?????mmin
 
  ??c??change???#表示属性被修改过:所有者、所属组、权限
  ??a??access???#被访问过(被查看过)
  ??m??modify???#表示内容被修改过
  查找/etc/目录下,在120分钟以内,内容被修改过的文件
 
  [root@localhost?~]#?find?/etc/?-mmin?-120
  /etc/
  /etc/resolv.conf
  /etc/group-
  /etc/gshadow-
  /etc/group
  /etc/gshadow
  ....省略....
  查找/etc/目录下,在7天之前,属性被修改过的文件
 
  [root@localhost?~]#?find?/etc/?-ctime?+7
  /etc/resolv.conf
  /etc/group-
  /etc/gshadow-
  ....省略....
  -inum 根据i节点查询
 
  有一些文件的硬链接数量很多,有相同的i节点,查找其中一个文件的i节点号,一次性删除。
 
  [root@localhost?~]#?find?./?-inum?1024?-exec?rm{}?\;???#删除相同I节点的数据
  -and or 逻辑连接符
 
  -a ???(and 逻辑与)?????
  -o????(or??逻辑或)
  在/etc/目录下,查找大于1k,并且小于10k的文件
 
  [root@localhost?~]#?find?/etc/?-size?+1k?-a?-size?-10k
  /etc/
  /etc/grub.d/00_header
  /etc/grub.d/20_ppc_terminfo
  /etc/grub.d/00_tuned
  /etc/rc.d/init.d/README
  /etc/rc.d/init.d/netconsole
  /etc/rc.d/init.d/network
  /etc/pam.d
  ....省略....
  -exec 命令执行连接符
 
  [查询格式]?find??...??-exec?命令?{}??\;
 
  {}????????#表示find查询的结果集
  \?????????#是转义符,不使用命令别名,直接使用命令本身
  ;?????????#分号是表示语句的结束.
 
  #注意:固定格式,只能这样写.注意中间的空格.
  (公众号:网络工程师阿龙)-----------------------------------------------------------------
  说明:?转义符的作用是什么?
 
  在linux中有一个别名机制,如rm删除文件,执行的却是rm?-i(用which?rm?可以查看命令别名),
  使用rm删除文件前会提示,就是因为rm -i这个参数。如果想使用命令原意,可以在加\转义,
  如:\rm test.txt ??则不会提示,直接删除
  查找/var/log/目录下名字以.log结尾的文件,找到后执行 ls -l 显示详细信息.
 
  [root@localhost?~]#?find?/var/log/?*.log?-exec?ls?-l?{}?\;
  total?1176
  drwxr-xr-x.?2?root???root??????204?Sep?18?09:12?anaconda
  drwx------.?2?root???root???????23?Sep?18?09:12?audit
  -rw-------.?1?root???root????53001?Sep?19?00:57?boot.log
  -rw-------.?1?root???utmp??????384?Sep?18?09:22?btmp
  drwxr-xr-x.?2?chrony?chrony??????6?Apr?12?13:37?chrony
  -rw-------.?1?root???root?????3523?Sep?19?01:01?cron
  -rw-r--r--??1?root???root???119414?Sep?19?00:57?dmesg
  -rw-r--r--??1?root???root???119599?Sep?18?23:35?dmesg.old
  -rw-r--r--.?1?root???root?????1320?Sep?19?00:23?firewalld
  -rw-r--r--.?1?root???root??????193?Sep?18?09:05?grubby_prune_debug
  ....
  查找/etc/目录下名字以"init*"开头的文件,找到后,只列出文件,过滤掉目录,并执行 ls -l 显示详细信息.
 
  [root@localhost?~]#?find?/etc/?-name?"init*"?-a?-type?f?-exec?ls?-l?{}?\;
 
  -rw-r--r--.?1?root?root?511?Apr?11?01:09?/etc/inittab
  -rw-r--r--.?1?root?root?798?Apr?11?01:09?/etc/sysconfig/init
  -rwxr-xr-x.?1?root?root?5419?Jan??2??2018?/etc/sysconfig/network-scripts/init.ipv6-global
  -rw-r--r--.?1?root?root?30?Apr?11?14:12?/etc/selinux/targeted/contexts/initrc_context
  查找/tmp/下,的yum.log文件,找到后直接删除.
 
  [root@localhost?tmp]#?find?/tmp/?-name?yum.log?-exec?rm?{}?\;
  [root@localhost?tmp]#
  查找根下,找关于lyshark用户的所有文件,找到后直接删除.
 
  [root@localhost?~]#?find?/?-user?lyshark?-exec?rm?-r?{}?\;
 
  find:?‘/proc/1465/task/1465/fd/6’:?No?such?file?or?directory
  find:?‘/proc/1465/task/1465/fdinfo/6’:?No?such?file?or?directory
  find:?‘/proc/1465/fd/5’:?No?such?file?or?directory
  find:?‘/proc/1465/fdinfo/5’:?No?such?file?or?directory
  find:?‘/root/Catalog’:?No?such?file?or?directory
  find:?‘/home/lyshark’:?No?such?file?or?directory
  #rm -r 连带目录一起删除.报错原因:-exec 不适合大量传输,速率慢导致.
  在根下,查找lyshark用户的文件,找到后删除,删除前会提示是否删除.
 
  [root@localhost?~]#?find?/?-user?lyshark?-ok?rm?-r?{}?\;
  find:?‘/proc/1777/task/1777/fd/6’:?No?such?file?or?directory
  find:?‘/proc/1777/task/1777/fdinfo/6’:?No?such?file?or?directory
 
  ???y
  #?-ok的使用和-exec是一样的,区别是-ok,执行时会提示你是否进行下一步操作.
 
 

(编辑:天瑞地安资讯网_保定站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!