文件属性与文件查找

admin 2024-9-1 7 9/1

文件时间

atime :Acess time 访问时间
#当文件被访问的时候,这个时间就会发生改变,在RHCL6开始atime延迟修改,必须满足以下之一条件;1:距离上次修改超过24小时 2:发生写操作
原因 ;因为Linux文件运行的时候查看文件频繁又数量大,如果每次atime发生变化的时候都计入硬盘,会造成很大的压力
mtime :修改时间 modify time
文件内容发生改变的时候
ctime  改变时间 change time
文件状态发生改变的时候

查看文件时间

stat 文件名
[root@serve1 ~]# stat test1
  File: ‘test1’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 33575551    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2024-07-04 08:13:38.562846791 +0800
Modify: 2024-07-04 08:13:38.562846791 +0800
Change: 2024-07-04 08:13:38.562846791 +0800
 Birth: -
#stat用于显示文件时间和inode内容
修改stat为英文环境系统
[root@localhost ~]# export LANG="en_US.UTF-8"
改回中文;LANG="zh_CN.UTF-8"

文件类型及查看

#文件类型
- 普通文件
d 目录文件
b 块设备文件
c 字符设备文件
s 套接字文件
p 管道文件
l 链接文件
#查看文件类型
ls -1 查看第一个字符
[root@serve1 ~]# ls -l
total 4
-rw-------. 1 root root 1241 Jul  1  2022 anaconda-ks.cfg
-rw-r--r--. 1 root root    0 Jul  4 08:13 test1
file 
#file是专门用来查看文件类型的命令
[root@serve1 ~]# file test1
test1: ASCII text
#stat 
[root@serve1 ~]# stat test1
  File: ‘test1’
  Size: 36              Blocks: 8          IO Block: 4096   regular file#/文件类型
Device: fd00h/64768d    Inode: 33575571    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2024-07-04 08:34:41.375494996 +0800
Modify: 2024-07-04 08:34:38.311475844 +0800
Change: 2024-07-04 08:34:38.311475844 +0800
 Birth: -

文件查找

which locate find
#which 在环境变量中查找,查找有运行权限的,在环境变量之中的。
环境变量 :一般指操作系统中用来指定操作系统运行环境的一些参数,比如临时文件的位置和系统文件的位置等。比如,之前修改的LANG变量,会影响stat的显示是中文还是英文,修改$pwd变量,会影响当前所处的文件夹。
我们使用shell输入命令的时候,每个命令都是有一个可执行文件区完成我们下达的任务,这个可执行文件在操作系统中是分布在不同的文件夹之中的,我们总不能每次执行的时候都明确表明具体位置,这样就太麻烦了,所以引入环境变量,这个变量中有很大的地址,当我们执行命令的时候,操作系统就会在这些目录中查找是否有我们输入的命令,有就去执行,没有就不去执行。
[root@serve1 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
which查找就是在环境变量中查找
[root@serve1 ~]# which ls
alias ls='ls --color=auto'
        /usr/bin/ls
[root@serve1 ~]# which poweroff
/usr/sbin/poweroff
#小知识
我们在执行ls的时候,其实执行的是ls --color=auto这条命令,在显示文件的时候使用不同的颜色表示不同的文件类型,如果我们想执行ls本体,而不想执行别名,我们可以输入\ls就可以了,这样就不会有不同的颜色表示文件类型了。
#locate
locate查找范围在保存文件和目录名称的数据库之中
#locate安装
[root@serve1 ~]# yum inatll mlocate -y
#locate查找
[root@serve1 ~]# updatedb
[root@serve1 ~]# locate test1
/root/test1
#locate 选项
-c 只输出找到的数量
-n 至多显示n个输出
-i 忽略大小写
-r 使用基本正则表达式
-regex 使用扩展正则表达式
-d DBPATH 使用指定数据库,不是默认数据库
[root@serve1 ~]# locate -r ens33$
/etc/sysconfig/network-scripts/ifcfg-ens33
#注意!
使用locate数据库的更新不是实时的,可以手动更新数据库,在默认情况下updatedb会每天执行一次,配置文件在/etc/updatedb.conf
#find
实时查找工具,通过遍历指定路径下的文件系统完成文件查找
精确查找,实时查找,查找速度略慢,可以满足多种条件匹配
find 路径 选项 查找条件+处理动作
查找条件
#根据文件名查找
[root@localhost ~]# find /etc -name "ifcfg-ens33"
[root@localhost ~]# find /etc -iname "ifcfg-ens33"    # 忽略大小写
[root@localhost ~]# find /etc -iname "ifcfg*"
#按照文件大小查找
[root@localhost ~]# find /etc -size +5M    # 大于5M
[root@localhost ~]# find /etc -size 5M    # 等于5M
[root@localhost ~]# find /etc -size -5M    # 小于5M
[root@localhost ~]# find /etc -size +5M -ls    # 找到的处理动作-ls
#指定查找的目录深度
[root@localhost ~]# find / -maxdepth 3 -a -name "ifcfg-ens33"    # 最大查找深度
# -a是同时满足,-o是或
[root@localhost ~]# find / -mindepth 3 -a -name "ifcfg-ens33"    # 最小查找深度
#按照时间查找
[root@localhost ~]# find /etc -mtime +5        # 修改时间超过5天
[root@localhost ~]# find /etc -mtime 5        # 修改时间等于5天
[root@localhost ~]# find /etc -mtime -5        # 修改时间5天以内
#按照文件的属主,属组查找
[root@localhost ~]# find /home -user xwz    # 属主是xwz的文件
[root@localhost ~]# find /home -group xwz  #属组是xwz的文件
[root@localhost ~]# find /home -user xwz -a -group root
[root@localhost ~]# find /home -nouser        # 没有属主的文件
[root@localhost ~]# find /home -nogroup        # 没有属组的文件
#按照文件类型查找
[root@localhost ~]# find /dev -type d
#按照文件权限查找
[root@localhost ~]# find / -perm -644 -ls    # 权限至少为644的
#按照正则表达式查找
[root@localhost ~]# find /etc -regex '.*ifcfg-ens[0-9][0-9]'
# .*    任意多个字符
# [0-9]    任意一个数字
#多条件组合 
-a and
-o or
-not 条件取反
#处理动作
-print 默认处理动作,显示至屏幕
-ls 
-delete 删除查找到的文件
-ok command {} \;执行command命令需要确认
-exec command {} \;执行command命令不需要确认
command 表示执行的命令 mv等
{} 查找到的文件本身
[root@serve1 ~]#find /root -name ”file*“ -ok mv {} dir2 \;
#将root目录下名中以file开头的文件移动到dir2 
注意 记得带\;

 

- THE END -

admin

9月01日17:28

最后修改:2024年9月1日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论