文件查找

locate 和 find

在文件系统中查找符合条件的文件

locate :非实时查找(数据库查找)

语法 :locate  +  文件名  直接查找

按照查询系统上预建的文件索引数据库

/var/lib/mlocate/mlocate.db    (每天开机以后自动生成,刚装的系统就找不到)

[XJ3698}3GSPT{[95YDR_FI

特点: 查找速度快        模糊查找       非实时查找      搜索的是文件的全路径,不仅仅是文件名

可能只搜索用户具备读取和执行权限的目录

locate 的命令选项: -i         :不区分大小写

-n  N  :   只列举前N个

-r        :   可以使用正则表达式

查找文件 locate   f1.sh

J8CNY}[L1B@F{~0}(RLXOLI

locate   /data   -i   f1.sh

(@SMDV31TXN{8W{0WCX9(6P

locate  -n5   f1.sh     显示出前面5行

F55`%)H~JZM05`{6`G0VA[B

locate -r “^/usr/.*\.lua$”      在/data 目录下 寻找以/usr 开头 以.lua结尾

AUM7M@RI1`RLTHZX$J%K7$6

 

find : 实时查找工具,通过遍历指定路径完成文件查找

工作特点: 查找速度略慢        精确查找      实时查找         可能只搜索用户具备读取和执行权限的目录

语法 : find 【OPTION】……[查找路径]【查找条件】【处理动作】

查找路径:指定具体目标路径;默认为当前目录

查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径                                        下的所有路径

处理动作:对符合条件的文件做操作,默认输出至屏幕

查找条件

指搜索层级   -maxdepth    level 最大搜索目录深度,指定目录为第一级

-mindepth     level 最小搜索目录深度

根据文件名或inode查找:

-name”文件名称”:支持使用glob

*, ?, [], [^]

-iname“文件名称”:不区分字母大小写

-inum n 按inode号查找

-samefile name 相同inode号的文件

-links n 链接数为n的

-regex “PATTERN”:以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称

find /etc/ -maxdepth 2 -name passwd    取/etc/ 下 含有passwd的最少第2层目录

_39N0TYKD{~%OZQ$8MQSFFS

find /etc/  -maxdepth 2 -mindepth  2 -name passwd  取/etc/ 最少2层 最多2层 含有passwd的目录

F~A4SXCGX[$OTUWIO7X3~5V

ll -ia  可以看到文件的节点编号

ARW]ZG6[KAPVA2ZD48F$VAN

find  /data  inum 68   取 /data 下文件  68的节点编号

K5UG$(9F~0OR{$@]`Z{_FS7

find /data -samefile lg.out  -ls   取 /data 目录下和lg.out相同的节点编号

0F6HVDZQZ][0WEQLDI5HO]W

find /etc/ -regex “.*\.conf$”   用正则表达式取/etc/下的 以.conf结尾的文件

H%A)PLEYMN{43SGNMONEODO

根据属主,属主查找:

user USERNAME : 查找属主为制定用户的(UID)的文件

-group GRPNAME: 查找属组为指定组(GID)的文件

find   /home  -user  heihei  -ls   查找在/home 下 用户为heihei 的文件属性

EYY60KUKHMREAEE8@}PL5MH

-nouser:查找没有属主的文件

-nogroup:查找没有属组的文件

find  /home  -nouser   查找/home下没有所属主的文件

LW)F70674NVXL@QF]$9F}VF

find /home -nouser -a -nogroup -ls 查找/home下即没有所属主有没有所属组的文件

G]{`~%A[7]3OFGH{Z_S)07L

find /home -nouser -o -nogroup

9_LN0KFM)7BZIF_`YN2H$FX

根据文件类型查找

-type :        f  :普通文件     d:目录文件    l :符号链接文件  s: 套接字文件    b: 块设备文件

c: 字符设备文件    p : 管道文件

空文件或目录

-empty

find /etc/ -empty -type f   查找/etc/ 普通空文件目录

`FKA7`KV@~]1K0[T2ZUEHUK

-not  ,   !

find  /data ! -empty  -type f   查找/data目录下非空的普通文件

(HDOYV[)ITY7_185OOGV@48

!A -a !B = !(A -o B)          !A -o !B = !(A -a B)

find /tmp \( -not -user root -a -not -name ‘f*’ \) -ls
find /tmp -not \( -user root -o -name ‘f*’ \) –ls

2LXD6[(][_J(7IHT}J_3~3I

根据文件的大小来查找

-size  [+|-] # UNIT  常用单位 :k, M ,G , c (byte)

#UNIT: (#-1, #]
如:6k 表示(5k,6k]
-#UNIT:[0,#-1]
如:-6k 表示[0,5k]
+#UNIT:(#,∞)
如:+6k 表示(6k,∞)

DZ`9J~8WZNRMP}HE3_K4E]5

如果SIZE 后面 跟数字 # 大小的话搜索出的数字是(数字#-1 ~ 到数字#)

如果size 后面跟数字 -#  的大小的话搜索出的数字是【0 ~ -1】

如果size后面跟数字 +# 的大小的话搜索出的数字是(数字# ~ 无穷大)

根据事件戳 以天为单位

-atime [+|-]#,
#: [#,#+1)
+#: [#+1,∞]
-#: [0,#)
-mtime
-ctime
以“分钟”为单位:
-amin
-mmin
-cmin

如果-atime 后面跟 # 【# ~ #+1)

如果-atime后面跟 -#【0 ~ # )

如果-atime后面跟+#【#+1 ~ 无穷大】

%)V]F7PIXOA_OYVH%WU2}NW

查看文件的时间用   stat  文件名

根据权限查找

-perm  [-|/] MODE

MODE: 精确权限匹配

/MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系,+ 从centos7开始淘汰

-MODE:每一类对象都必须同时拥有指定权限

find /data -perm 644  -ls     查找在/data目录下权限为644的文件

9QE8IZVVQ3M_M__D_RZ${MP

find /data -perm  /644  -ls  查找在/data目录下只要有权限符合644中的任意一个都可以显示出来IMMH~2SUS[EHFS)DNZ}0~BQfind /data -perm -644  -ls  查找在/data目录下权限为644以上的文件60QOISYX_~TFJM4XFYXX7$Q

文件的处理动作

-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认

-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令

{}: 用于引用查找到的文件名称自身

ind传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令

find  /data  -name  “f*”  -exec mv {}  {}.bak2.org  \;   把/data 目录下带 f 的文件移动到 /data 目录下并改名为以.bak2.org 结尾的文件

PB}[C5EF8UW`NH8V{$L5634

在 find 中带有-ok   -exec  必须以    \;  作为结束命令

 

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/96997

(0)
上一篇 2018-04-24 18:01
下一篇 2018-04-25 09:20

相关推荐

  • 学习笔记(12)

    学习笔记(12)

    Linux笔记 2018-04-30
  • liunx 笔记

    服务器硬件—CPU      服务器CPU公司   :Inter    xeon  至 强  ltanium   安腾      AMD A lthlon  MP   IBM  power 这几种。 服务器CPU分主频、外頻、倍频三个频率。CPU类型 :x86   x64 (clsc)  ARM  m6l8000 ,m68k power  pow…

    Linux笔记 2018-04-01
  • nmcli team 网桥

    nmcli connection 命令行更改ip地址 nmcli connection add con-name home-eth3 ifname eth1 type ethernet ipv4.method auto connection.autoconnect yes 表示在 eth1网卡身上 上添加 名为home-eth3 自动获取且下回自动开启的 E…

    Linux笔记 2018-05-06
  • 第一周作业

    1、描述计算机的组成及其功能。
    2、按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。
    3、描述Linux的哲学思想,并按照自己的理解对其进行解释性描述。
    4、说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相应的示例来阐述。
    5、如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。
    6、请罗列Linux发行版的基础目录名称命名法则及功用规定

    1、描述计算机的组成及其功能:
    计算机由五大部件组成:控制器、运算器、存储器、输入设备、输出设备。
    控制器 :控制计算机各个部件,以实现不同的功能。
    运算器 :执行各种算数运算、逻辑运算,以及对数据的加工。
    存储器 :存放各种数据、指令。
    输入设备 :人机交互的途径,如键盘、鼠标等输入数据的设备。
    输出设备 :人机交互的途径,如显示器、打印机等输出数据的设备。

    2、按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。
    Redhat :使用人群数量大,稳定性非常好,适合当服务器。
    Fedora :基于Redhat,由Redhat桌面版发展而来。
    CentOS :RHEL的复制品。
    Debian :社区类Linux典范,三个分支:Stable(一般只用于服务器),testing,Unstable(用于桌面用户)
    Ubuntu :基于Debian开发,加强桌面系统,是Linux桌面系统使用最多的发行版。
    Slackware:基于SLS的发行版,以其简洁、安全、稳定、高效著称。
    S.u.S.E :以Slackware为基础开发,软件包齐全,桌面系统也还可以。
    Gentoo:最年轻的发行版本,吸取所有发行版的优势诞生,最完美的发行版之一。

    3、描述Linux的哲学思想,并按照自己的理解对其进行解释性描述。
    1)一切皆文件:
    Linux中,一切的东西都可以用文件来表示,如:字符设备、块设备。
    2)由众多单一目的的小程序,一个程序只实现一个功能,多个程序组合完成复杂任务。
    复杂任务也是通过多个简单程序组合,保证高效性。
    3)文本文件保存配置信息。
    Linux对于所有系统的配置都在配置文件中,任何一个编辑工具都能修改。
    4)尽量避免与用户交互
    脚本语言丰富,易于实现自动化进程。

    4、说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相应的示例来阐述。
    ~]# COMMAND [OPTION] PATH
    ifconfig:查看网络各种信息、配置网络接口,这个命令已过时,现在用ip addr、ip link。
    [root@localhost ~]# ifconfig
    eno16777736: flags=4163 mtu 1500
    inet 192.168.171.107 netmask 255.255.255.0 broadcast 192.168.171.255
    inet6 fe80::20c:29ff:fef0:ee12 prefixlen 64 scopeid 0x20

    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    lo: flags=73 mtu 65536
    inet 127.0.0.1 netmask 255.0.0.0
    inet6 ::1 prefixlen 128 scopeid 0x10

    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
    [root@localhost ~]# ifconfig lo down
    [root@localhost ~]# ifconfig
    eno16777736: flags=4163 mtu 1500
    inet 192.168.171.107 netmask 255.255.255.0 broadcast 192.168.171.255
    inet6 fe80::20c:29ff:fef0:ee12 prefixlen 64 scopeid 0x20

    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
    echo:display a line of text,回显,可用于标准输入。
    -n:不输出尾随换行符
    -e:启用反斜杠转义的解释
    -E:不启用反斜杠转义的解释(默认)
    [root@localhost ~]# echo hahaha
    hahaha
    [root@localhost ~]# echo -n hahah
    hahah[root@localhost ~]#
    [root@localhost ~]# echo -e “\n” hahaha

    hahaha
    [root@localhost ~]#
    tty:显示终端机连接标准输入设备的文件名称。
    [root@localhost ~]# tty
    /dev/pts/0
    startx:初始化一个X window
    export:用于设置或显示环境变量。
    -f  代表[变量名称]中为函数名称。
    -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
    -p  列出所有的shell赋予程序的环境变量。
    [root@localhost /]# export MYENV=666
    [root@localhost /]# export -p
    declare -x HISTCONTROL=”ignoredups”
    declare -x HISTSIZE=”1000″
    declare -x HOME=”/root”
    declare -x HOSTNAME=”localhost.localdomain”
    declare -x LESSOPEN=”||/usr/bin/lesspipe.sh %s”
    declare -x LOGNAME=”root”
    ……
    declare -x MAIL=”/var/spool/mail/root”
    declare -x MYENV=”666″
    declare -x OLDPWD=”/root”
    declare -x PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin”
    declare -x PWD=”/”
    ……
    declare -x SHELL=”/bin/bash”
    declare -x SHLVL=”1″
    declare -x SSH_CLIENT=”192.168.171.35 55854 22″
    declare -x SSH_CONNECTION=”192.168.171.35 55854 192.168.171.107 22″
    declare -x SSH_TTY=”/dev/pts/1″
    declare -x TERM=”xterm”
    declare -x USER=”root”
    declare -x XDG_RUNTIME_DIR=”/run/user/0″
    declare -x XDG_SESSION_ID=”10″
    [root@localhost /]# export -n MYENV
    [root@localhost /]# export -p
    declare -x HISTCONTROL=”ignoredups”
    declare -x HISTSIZE=”1000″
    declare -x HOME=”/root”
    declare -x HOSTNAME=”localhost.localdomain”
    declare -x LESSOPEN=”||/usr/bin/lesspipe.sh %s”
    declare -x LOGNAME=”root”
    ……
    declare -x MAIL=”/var/spool/mail/root”
    declare -x OLDPWD=”/root”
    declare -x PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin”
    declare -x PWD=”/”
    ……
    declare -x SHELL=”/bin/bash”
    declare -x SHLVL=”1″
    declare -x SSH_CLIENT=”192.168.171.35 55854 22″
    declare -x SSH_CONNECTION=”192.168.171.35 55854 192.168.171.107 22″
    declare -x SSH_TTY=”/dev/pts/1″
    declare -x TERM=”xterm”
    declare -x USER=”root”
    declare -x XDG_RUNTIME_DIR=”/run/user/0″
    declare -x XDG_SESSION_ID=”10″
    pwd:显示当前工作目录
    [root@localhost ~]# pwd
    /root
    history:用于显示指定数目的指令;
    -c :清空当前历史命令;
    -a :将历史命令缓冲区中命令写入历史命令文件中;
    -r :将历史命令文件中的命令读入当前历史命令缓冲区;
    -w :将当前历史命令缓冲区命令写入历史命令文件中;
    [root@localhost ~]# history
    1 nm-connection-editor
    2 cd
    3 systemctl restart network
    4 ping baidu.com
    5 history
    [root@localhost ~]# history -c
    [root@localhost ~]# history
    1 history
    [root@localhost ~]#
    shutdown、poweroff、reboot:关机、重启命令;
    hwclock:显示调整硬件时钟命令;
    –set –date=:修改硬件时间;
    –systohc:设置硬件时间为当前系统时间;
    –hctosys:设置系统时间为当前硬件时间;
    [root@localhost ~]# hwclock
    Mon Aug 20 09:20:45 2018 -0.241275 seconds
    [root@localhost ~]# hwclock –set –date=’2018-01-01 01:01:01′
    [root@localhost ~]# hwclock
    Mon Jan 1 01:01:04 2018 -0.083944 seconds
    [root@localhost ~]# hwclock –systohc
    [root@localhost ~]# hwclock
    Mon Aug 20 09:22:32 2018 -0.287440 seconds
    date:查看修改系统时间。
    [root@localhost ~]# date
    Mon Aug 20 09:40:50 CST 2018
    [root@localhost ~]# date “+现在时间是Y-%m-%d %H-%M-%S”
    现在时间是2018-08-20 09-42-35
    [root@localhost ~]# date -s “20111111 11:11:11”
    Fri Nov 11 11:11:11 CST 2011
    5、如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。
    help/man/info
    help命令用于显示shell内部命令的帮助信息。help命令只能显示shell内部的命令帮助信息。而对于外部命令的帮助信息只能使用man或者info命令查看。
    man:
    -f:同’whatis’;
    1 Executable programs or shell commands
    2 System calls (functions provided by the kernel)
    3 Library calls (functions within program libraries)
    4 Special files (usually found in /dev)
    5 File formats and conventions eg /etc/passwd
    6 Games
    7 Miscellaneous (including macro packages and conventions), e.g. man(7),groff(7)
    8 System administration commands (usually only for root)
    9 Kernel routines [Non standard]
    6、请罗列Linux发行版的基础目录名称命名法则及功用规定
    Linux发行版遵循FHS标准:Filesystem Hierarchy Standard(文件系统层次化标准)
    [root@localhost ~]# ls /
    bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
    [root@localhost ~]# tree -L 1 /
    /
    |– bin -> usr/bin (一般用户使用的命令)
    |– boot (放置内核及引导程序文件)
    |– dev (硬盘、分区、键盘、鼠标、USB、tty等的所有设备文件)
    |– etc (系统所有的配置文件)
    |– home (普通用户家目录)
    |– lib -> usr/lib (库文件)
    |– lib64 -> usr/lib64 (64位库文件)
    |– media (软盘、光盘、DVD等挂载点)
    |– mnt (临时挂载点)
    |– opt (第三方协力软件)
    |– proc (将进程和内核信息以文件形式存放的目录)
    |– root (管理员用户家目录)
    |– run (运行时的变量信息,本次系统运行的系统信息)
    |– sbin -> usr/sbin (存放系统管理可执行文件)
    |– srv (一些网络服务启动收所需要的数据目录)
    |– sys (与proc类似,是虚拟文件系统,硬件装置信息等)
    |– tmp (文件临时存放目录,可设置重启之后清空)
    |– usr (只读用户的次要层次,包括大部分应用程序)
    `– var (存储经常变动的数据的目录,如缓存、日志)

    Linux笔记 2018-08-20
  • 32N 第二周

    1:Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 ls 列出目录内容-a 列出所有文件,包括”.”开头的隐藏文件-d 将目录名像其他文件一样列出,而不是列出目录中的内容-i 列出inode节点号-l 用长格式输出文件信息pwd 输出当前目录的绝对路径cd  changdirectory,修改当前目录到指定目录cat 将文件或标准输…

    2018-08-27