linux目录管理-档案搜寻

找寻档案:

which 搜寻“执行档”:

image

 

档案挡名的搜寻: 

whereis  搜寻特定档案

image

 locat命令:

image

 同步数据库的命令:updatedb

image

 find命令:

image

 

image

 -atime: 基于访问时间(access time). 

  • 含义:查找在指定天数前被访问过的文件。

  • 重要提示:由于频繁记录访问时间会严重影响性能,许多现代Linux系统默认使用 relatime 或 noatime 选项挂载磁盘。这会导致 -atime 的更新不准确或完全不更新。因此,-atime 通常不如 -mtime 可靠。

  • 用途:分析文件的使用频率,例如找出很久没人读过的文件以便归档。

  • 示例:

    • find /home -atime +90:查找/home目录下超过90天未被访问的文件。

-ctime: 基于状态变更时间

  • 含义:查找在指定天数前状态(元数据)发生改变的文件。

  • 最容易混淆的点:很多人误以为 -ctime 是“创建时间”。在标准Unix/Linux文件系统中,没有直接记录“创建时间”的字段。-ctime 与文件内容是否改变无关,与文件属性是否改变有关。

  • 用途:监控系统安全,查找权限、所有者被意外更改的文件;或结合 -mtime 使用进行更精确的筛选。

  • 示例:

    • find /etc -ctime -1:查找/etc目录下过去24小时内状态发生改变的文件(如权限被chmod修改过)。

-mtime: 基于修改时间(modify time)

  • 含义:查找在指定天数前内容被修改过的文件

  • 用途:最常用。例如:查找最近更改过的配置文件、备份最近修改过的文档、清理很久没动过的临时文件。

  • 示例:

    • find . -mtime -1:查找过去24小时内修改过的文件。

    • find /var/log -mtime +7:查找7天以前(超过168小时)修改过的日志文件。

    • find . -mtime 0:查找在过去24小时到此刻之间修改过的文件。

1. 查找当前目录下的所有文件(不包括子目录)
find . -maxdepth 1 -type f

-maxdepth 1:只在当前目录查找,不进入子目录
-type f:只显示文件(不包括目录)

2. 查找当前目录下的所有文件和目录
find . -maxdepth 1

3. 按文件名查找特定文件
find . -maxdepth 1 -name "*.txt"  # 查找所有txt文件
find . -maxdepth 1 -name "test*"  # 查找以test开头的文件

4. 查找特定类型的文件
find . -maxdepth 1 -type f  # 只找文件
find . -maxdepth 1 -type d  # 只找目录
find . -maxdepth 1 -type l  # 只找符号链接

5. 按时间查找
find . -maxdepth 1 -mtime -7   # 7天内修改过的文件
find . -maxdepth 1 -mtime +30  # 30天前修改过的文件

6. 按大小查找
find . -maxdepth 1 -size +1M   # 大于1MB的文件
find . -maxdepth 1 -size -100k # 小于100KB的文件

7. 组合条件查找
find . -maxdepth 1 -type f -name "*.log" -size +10M
# 查找大于10MB的log文件

8. 常用简化命令
如果你只是想查看当前目录的内容,使用 ls 可能更简单:
ls -la           # 显示所有文件(包括隐藏文件)
ls -lh           # 以易读格式显示文件大小
ls -ltr          # 按修改时间倒序排列

9. 结合其他命令
find . -maxdepth 1 -type f | wc -l   # 统计文件数量
find . -maxdepth 1 -type f -exec ls -lh {} \;  # 显示详细文件信息

注意:如果要去掉 -maxdepth 1 参数,find 会递归搜索所有子目录。根据你的实际需求选择合适的命令。

 find命令: 跟“使用者或组名” 有关 的选项和参数:

image

 

案例:

find /home -user vbird #搜寻/home目录底下 属于vbird用户的档案

find / -nouser #搜寻系统中 不属于任何用户的档案

 

find命令:跟“档案权限及名称”有关的参数:

image

 

-name filename 搜索名字
-type d/f/l/s   搜索某个类型
-size [+-] SIZE  搜索某个文件大小的档案

find命令: 额外可以进行动作:

image

 find . -type d -name testwx -exec ls -al {} \;
 find . -type d -name testwx -exec ls -al {} ';'
上面两个命令一样的作用,就是写法不同。

在多个目录下查询档案:
find /home /var -type f -name test.txt
 

释:

  • {} 会被替换为找到的每个目录路径

  • 分号 ; 需要被转义(用 \;)或引用(用 ';'

  • 空格是必需的,因为 {} 和 \; 是两个独立的参数

image

 find命令,可以利用通配符来找寻档名:

image

 

find / -name '*httpd*'

 

指令和权限:

image

 总结:

image

image

umask命令: 可以给档案或者目录拿掉一些权限

案例:

umask 033 filename #给filename拿掉所属组的wx权限,并拿掉其他用户的wx权限

 

image

 image

 

1) find命令中,条件的且
案例:  找出 /etc 底下,档案大小介于 50K 到 60K 之间的档案,并且将权限完整的列出 (ls -l)
find /etc -size +50k -a -size -60k -exec ls -al {} \;


2)find命令中,条件非
案例:找出 /etc 底下,档案容量大于 50K 且档案所属人不是 root的档名,且将权限完整的列出 (ls -l); 
find /etc -size +50k -a ! -user root -exec ls -ld {} \;
find /etc -size +50k -a ! -user root -type f -exec ls -ld {} \;

 

posted @ 2025-12-26 11:29  苹果芒  阅读(4)  评论(0)    收藏  举报