Linux 系统下查找文件命令,融合多部Linux经典著作,去除多余部分,保留实用部分。

查命令绝对路径: 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 命令可以说是最重要的查找命令了,该命令参数较多。

[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的文件

[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 < rm ... /root/LyShark > ? y # -ok的使用和-exec是一样的,区别是-ok,执行时会提示你是否进行下一步操作.

Linux 系统下查找文件命令的更多相关文章

  1. Linux系统下查找文件的方法

    Linux系统下查找文件的方法 作者:Vashon 时间:20150419 方法一.在当前目录里查找所有名为以 java 开头的文件: find ./ -name "java*" ...

  2. linux系统下修改文件夹目录权限

    linux系统下修改文件夹目录权限 文件夹权限问题 Linux.Fedora.Ubuntu修改文件.文件夹权限的方法差不多.很多人开始接触Linux时都很头痛Linux的文件权限问题.这里告诉大家如何 ...

  3. 【转载】在Linux系统下用dd命令制作ISO镜像U盘启动盘

    #### 将U盘插入USB接口 #umount /dev/sdb* #dd if=/iso存放路径/XXX.iso of=/dev/sdb bs=1M ##### [转载]在Linux系统下用dd命令 ...

  4. Linux系统下利用wget命令把整站下载做镜像网站

    Linux系统下利用wget命令把整站下载做镜像网站 2011-05-28 18:13:01 | 1次阅读 | 评论:0 条 | itokit  在linux下完整的用wget命令整站采集网站做镜像 ...

  5. Linux系统下的shutdown命令用于安全的关闭/重启计算机

    Linux系统下的shutdown命令用于安全的关闭/重启计算机,它不仅可以方便的实现定时关机,还可以由用户决定关机时的相关参数.在执行shutdown命令时,系统会给每个终端(用户)发送一条屏显,提 ...

  6. Linux系统下远程文件拷贝scp命令

    在Linux系统下,不同机器上实现文件拷贝 一.将本地文件拷贝到远程机器: scp /home/administrator/news.txt root@192.168.6.129:/etc/squid ...

  7. 在Linux系统上查找文件

    Find命令 格式:find <指定搜索范围> <指定条件> <指定动作> 其中搜索范围是一个目录名,指定条件包括文件名.文件属性(修改时间所属用户等).所在位置特 ...

  8. linux(七)之linux系统中查找文件

    前面介绍一篇文章介绍了关于vi编辑器的使用,感觉是不是那么多的命令怎么记得住呀,小编也是这样让认为的,但是慢慢的发现,其实还是很有意思的.正所谓熟能生巧多练习,找到其中的规律就ok了.今天看到一句话让 ...

  9. 【Linux】---Linux系统下各种常用命令总结

    在Linux系统下,“万物皆文件”,之所以强调在强调这个概念,是因为很多人已经习惯了win系统下找找点点得那种方式和思维,因此总是会觉得linux系统下很多指令既复杂又难记.其实都是一样得东西,只是w ...

  10. linux下查找文件命令总结

    主要有find,locate,whereis,which等 1. find是最常用也是最强大的查找命令,它可以查找任何类型的文件. find命令的一般格式为:find <指定目录>< ...

随机推荐

  1. Go--日志

    一.Logger go语言默认提供的日志功能,包为ttps://golang.org/pkg/log/ 优势: 使用非常简单,可以设置任何io.Writer作为日志记录输出并向其发送要写入的日志 劣势 ...

  2. MVVM架构

    一.MVVM架构和Jetpack MVVM即Model-View-ViewModel的缩写,它的出现是为了将图形界面和业务逻辑,数据模型进行解耦.在前面章节所学习的Jetpack组件,大部分是为了能够 ...

  3. 生成学习全景:从基础理论到GANs技术实战

    本文全面探讨了生成学习的理论与实践,包括对生成学习与判别学习的比较.详细解析GANs.VAEs及自回归模型的工作原理与结构,并通过实战案例展示了GAN模型在PyTorch中的实现. 关注TechLea ...

  4. Problem 1342B - Binary Period (思维)

    AC代码: #include<bits/stdc++.h> using namespace std; int main() { //freopen("in.txt", ...

  5. 你以为这是MacOS ,其实这是我的 Linux 系统 Manjaro!

    对于如何将你的 Manjaro 系统美化成 MacOS 你需要做以下几件事情: 1.安装 WhiteSur-Gtk-theme 主题. 2.安装 Plank 软件. 3.安装 vala-panel-a ...

  6. 技术文档丨 OpenSCA技术原理之npm依赖解析

    本文主要介绍基于npm包管理器的组件成分解析原理. npm介绍 npm(全称Node Package Manager)是Node.js标准的软件包管理器. npm的依赖管理文件是package.jso ...

  7. 函数计算 HTTP 触发器支持异步,解放双手搭建 Web 服务

    作者| 阿里云Serverless技术专家 澈尔 当前阿里云函数计算支持两种类型的函数:事件函数和 HTTP 函数.其中 HTTP 函数结合 HTTP 触发器,能够支持用户直接通过 HTTP 请求利用 ...

  8. BTC-协议

    BTC-协议 一个去中心化的数字货币要解决两个问题 1.谁有权发行货币 比特币的发行是由挖矿决定的(coinbase transaction 唯一一个产生新币的途径)比特币通过挖矿来决定货币的发行权, ...

  9. Python-函数-算术函数

    #python-函数-算术函数 #(1)加减乘除 #加法 add(),减法 subtract(),乘法 multiply(),除法 divide() #作用:数组间的加减乘除 import numpy ...

  10. Java - 获取个十百千位数

    int n= 1234: System.out.println(n%10 ); //获取个位 System.out.println((n/10)%10 ); //获取十位 System.out.pri ...