首页 > 系统相关 >Linux学习笔记8(Find命令进阶学习)

Linux学习笔记8(Find命令进阶学习)

时间:2024-08-02 11:53:11浏览次数:13  
标签:文件 进阶 perm find 查找 Linux txt type Find

目录

通过所有者来查找

1. 指定所属的用户

2. 指定所属的组

通过权限来查找

1. 指定精确的权限查找

2. 指定所有者(用户、组、其他人)至少有一个拥有此权限即可

3. 指定文件最低权限查找,即大于等于

4. 查找文件不是指定的权限(取反)

5. 查找所有只读的文件

6. 查找所有可执行文件

-mmin n 查找按照分钟时间进行搜索

-mtime n 按照多少天进行搜索

通过文件的时间来查找

文件的时间分类:

1. 搜索最近七天内被访问过的所有文件

2. 搜索恰好在七天前被访问过的所有文件

3. 搜索超过七天内被访问过的所有文件

4. 搜索访问时间超过10分钟的所有文件

5. 找出比file.log修改时间更长的所有文件

6. 以今天开始计算时间查找修改时间大于等于30天的文件

基于目录深度搜索

删除匹配的文件

使用 -exec 选项来执行其他命令

实例:

1. 查找当前目录下,所属用户为root的文件,并把匹配到的每一个文件通过 chown 修改所有者为 tom。

2. 查找家目录下面,以 .txt 结尾的文件,并把匹配到的每一个文件执行删除操作,-ok 与 -exec 不同之处在于会提示需要用户是否要执行此操作

3. 查找当前目录下,以 .txt 结尾的文件,并把匹配到的每一个文件通过 cat 命令显示屏幕上,然后执行 > /all.txt 把结果写入到 all.txt 文件中

4. 将30天前的.log文件移动到old目录中

5. 找出当前目录下所有.txt文件并以“File:文件名”的形式打印出来

7. 查找当前目录或者子目录下所有.txt文件,但是跳过子目录sk

8. 查找指定目录,忽略多个目录,用 -o 连接

其他实例:

1. 删除空文件

2. 删除空目录

3. 忽略错误信息,使用 2 > /dev/null 重定向到垃圾桶

4. 在知道部分路径名的情况下,使用 -ipath 来搜索

5. 查找大文件进行删除

6. 配合 grep 使用

关键点说明

记住:


-user -group

通过所有者来查找

1. 指定所属的用户

find . -user syslog

2. 指定所属的组

find . -group www -perm Searching files by permissions • Search for files which are executable but not readable. $ find /sbin /usr/sbin -executable \! -readable -print # 搜索 /sbin /usr/sbin 目录下 能执行但是不能读的权限文件 • Search for files which have read and write permission for their owner, and group, but which other users can read but not write to. $ find . -perm 664 # 搜索权限是644的文件 Files which meet these criteria but have other permissions bits set (for example if someone can execute the file) will not be matched. • Search for files which have read and write permission for their owner and group, and which other users can read, without regard to the presence of any extra permission bits (for example the executable bit). $ find . -perm -664 # 搜索权限是644的文件,不考虑是否存在任何额外的权限位 This will match a file which has mode 0777, for example. • Search for files which are writable by somebody (their owner, or their group, or anybody else). $ find . -perm /222 • Search for files which are writable by either their owner or their group. $ find . -perm /220 $ find . -perm /u+w,g+w $ find . -perm /u=w,g=w All three of these commands do the same thing, but the first one uses the octal representation of the file mode, and the other two use the symbolic form. The files don't have to be writable by both the owner and group to be matched; either will do. • Search for files which are writable by both their owner and their group. $ find . -perm -220 $ find . -perm -g+w,u+w Both these commands do the same thing. • A more elaborate search on permissions. $ find . -perm -444 -perm /222 \! -perm /111 $ find . -perm -a+r -perm /a+w \! -perm /a+x These two commands both search for files that are readable for everybody (-perm -444 or -perm -a+r), have at least one write bit set (-perm /222 or -perm /a+w) but are not executable for anybody (! -perm /111 or ! -perm /a+x respectively).

通过权限来查找

1. 指定精确的权限查找

find / -perm 644

2. 指定所有者(用户、组、其他人)至少有一个拥有此权限即可

find / -perm /644

3. 指定文件最低权限查找,即大于等于

find / -perm -644

4. 查找文件不是指定的权限(取反)

find / ! -perm 644

5. 查找所有只读的文件

find . -perm /u=r

6. 查找所有可执行文件

find . -perm /a=x

-mmin n 查找按照分钟时间进行搜索

File's data was last modified less than, more than or exactly n minutes ago.

-mtime n 按照多少天进行搜索

File's data was last modified less than, more than or exactly n*24 hours ago. See the comments for -atime to understand how rounding affects the interpretation of file modification times. -prune需要和-path结合使用,并且放在其他条件前面

通过文件的时间来查找

文件的时间分类:

访问时间 ( -atime/ 天, -amin/ 分钟):用户最近一次访问时间。修改时间 ( -mtime/ 天, -mmin/ 分钟):文件最后一次修改时间。变化时间 ( -ctime/ 天, -cmin/ 分钟):文件数据元(例如权限等)最后一次修改时间。

1. 搜索最近七天内被访问过的所有文件

find . -type f -atime -7

2. 搜索恰好在七天前被访问过的所有文件

find . -type f -atime 7

3. 搜索超过七天内被访问过的所有文件

find . -type f -atime +7

4. 搜索访问时间超过10分钟的所有文件

find . -type f -amin +10

5. 找出比file.log修改时间更长的所有文件

find . -type f -newer file.log

6. 以今天开始计算时间查找修改时间大于等于30天的文件

find . -mtime +30 -daystart

基于目录深度搜索

1. 向下最大深度限制为 3 find . -maxdepth 3 -type f 2. 搜索深度距离当前目录至少 2 个子目录的所有文件 find . -mindepth 2 -type f

删除匹配的文件

find . -type f -name "*.txt" -delete

使用 -exec 选项来执行其他命令

语法固定格式: -exec [other command] {} \; 语法解释: • {} 表示匹配到的每一个文件,此处花括号作为占位符 • \; ; 表示 -exec 选项的结束标记, \ 则用来转义 ;

实例:

1. 查找当前目录下,所属用户为root的文件,并把匹配到的每一个文件通过 chown 修改所有者为 tom。

find . -type f -user root -exec chown tom {} \;

2. 查找家目录下面,以 .txt 结尾的文件,并把匹配到的每一个文件执行删除操作,-ok 与 -exec 不同之处在于会提示需要用户是否要执行此操作

find ~ -name "*.txt" -ok rm {} \;

3. 查找当前目录下,以 .txt 结尾的文件,并把匹配到的每一个文件通过 cat 命令显示屏幕上,然后执行 > /all.txt 把结果写入到 all.txt 文件中

find . -type f -name "*.txt" -exec cat {} \;> /all.txt

4. 将30天前的.log文件移动到old目录中

find . -type f -mtime +30 -name "*.log" -exec mv {} old \;

5. 找出当前目录下所有.txt文件并以“File:文件名”的形式打印出来

find . -type f -name "*.txt" -exec printf " File: %s\n " {} \; 6. -exec 后面接 sh 脚本文件,可执行多个命令 -exec ./text.sh {} \;

7. 查找当前目录或者子目录下所有.txt文件,但是跳过子目录sk

find . -path "./sk" -prune -o -name "*.txt" -print

8. 查找指定目录,忽略多个目录,用 -o 连接

find . \( -path ./sk -o -path ./st \) -prune -o -name "*.txt" -print

其他实例:

1. 删除空文件

find . -type f -empty -delete

2. 删除空目录

find . -type d -empty -delete

3. 忽略错误信息,使用 2 > /dev/null 重定向到垃圾桶

find / -name "abc.txt" 2 > /dev/null

4. 在知道部分路径名的情况下,使用 -ipath 来搜索

find / -type d -name 'img' -ipath "*public_html/ example.com *"

5. 查找大文件进行删除

find / -type f -size +100M -exec rm -f {} \;

6. 配合 grep 使用

find . -type f -name "*.txt" -exec grep 'Geek' {} \;

关键点说明

1. find 不指定路径,则表示在当前目录查找 2. 文件名最好加上双引号 3. -o 是或的意思,默认不加则为且所有特殊符号都必须要用 \ 反斜杠转义 4. 所有特殊符号都必须要用 \ 反斜杠转义 5. . 是当前目录, ~ 是家目录, / 是根目录

记住:

在 shell 中用任何方式删除文件之前,应当先查看相应的文件,一定要小心!当使用诸如 mv 或 rm 命令时,可以使用 -exec 选项的安全模式。它将在对每个匹配到的文件进行操作之前提示 你。 在下面的例子中, find 命令在当前目录中查找所有文件名以 .LOG 结尾、更改时间在 5 日以上的文件,并删除它们,只不过在删除之前先给出提示。 $ find . -name "*.conf" -mtime +5 -ok rm { } \; < rm ... ./conf/httpd.conf > ? n 按 y 键删除文件,按 n 键不删除。 任何形式的命令都可以在 -exec 选项中使用。 在下面的例子中我们使用 grep 命令。 find 命令首先匹配所有文件名为 “ passwd*” 的文件,例如 passwd 、 passwd.old 、 passwd.bak ,然后执行 grep 命令看看在这些文件中是否存在一个 sam 用 户。 # find /etc -name "passwd*" -exec grep "sam" { } \; sam:x:501:501::/usr/sam:/bin/bash

标签:文件,进阶,perm,find,查找,Linux,txt,type,Find
From: https://blog.csdn.net/lemon310/article/details/140814900

相关文章

  • 记录一次CentOS/Linux下安装vsftp服务器的过程
    1安装ftp软件yuminstallvsftpd*-y2配置服务启动#启用firewalld服务systemctlstartvsftpd.service#开启vsftpd服务这条命令设置firewalld服务在系统启动时自动启动。systemctlenable命令用于管理系统服务的启动和停止配置。启用服务后,它会在每次系统启动时......
  • Linux设备树配置指南:ES8388音频编解码器集成
    在嵌入式Linux开发中,设备树对于硬件集成至关重要。本文详细介绍了如何在设备树中配置ES8388音频编解码器,包括耳机检测、扬声器控制和音频路由。在嵌入式系统设计中,音频功能是一个常见需求。ES8388是一款流行的音频编解码器,支持多种音频输入输出功能。本文将指导您如何在Linux......
  • Linux命令快速复习,复制到记事本,忘记就ctrl+f速查
    命令:通用格式:command[-options][parameter];-options控制行为细节,parameter命令的指向目标ls[-a-l-h][Linux路径];显示目标路径下的文件;-a显示以.开头的隐藏项,-l列表形式展现更多信息,-h要与-l同时使用显示文件大小cd[Linus路径];切换目录,无参数切换到HOME目录【changed......
  • Linux内存管理与监控
    1、物理内存与虛拟内存物理内存就是系统硬件提供的内存大小,是真正的内存,相对于物理内存,在linux下还有一个虛拟内存:的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(SwapSpace)linux的内存管......
  • Linux路径的概念及目录的操作命令 cd、pwd、mkdir、rmdir
    本文主要介绍Linux系统中路径的基本概念以及对目录的基础操作。根目录的概念在Windows操作系统中,是由盘符开始描述路径,如:C:\Programs\abc\或者D:\game\abc\。在Linux操作系统中,则是以目录树的形式展现,所有的文件及目录都是从根目录/开始的,如/home,/etc等,即便是有多......
  • C高级(2)linux命令
    目录1系统维护命令1.1man1.2su1.3sudo1.4df命令1.5mount命令2用户管理命令3进程管理命令3.1ps3.2top3.3修改优先级3.4grep命令3.5kill命令3.6前后台切换命令4网络管理命令4.1命令5文件系统管理命令5.1文件系统分类5.2根文件系统结构5.3文件内容显示5.4链......
  • Python连接MinIO进阶教程:文件类型指定、上传与获取预览链接
    文章目录概要1.指定文件内容类型2.获取文件的预览链接(PresignedURL)使用fput_object上传文件4.完整示例与总结概要在上一篇文章中,我们介绍了如何使用Python连接MinIO服务器,并进行了基本的文件上传和下载操作。这次,我们将深入探讨一些进阶功能,包括在上传文件时指......
  • Linux 命令,cat说明与使用
    1:grep命令功用:读一个或多个文件并显示到标准输出上,如果没有指定files或是指定一个文件,则从标准输入读取,输入以EOF结束。可以使用操作符>把几个文件组合为一个新文件,或者是使用>>在已经存在的文件里添加文件内容。2:命令构件:cat[options][files]3:参数选项:-A,--show-all......
  • 连载|浅谈红队中的权限维持(六)-Linux 主机后门与Linux 隐藏文件
    本文来源无问社区,更多实战内容,渗透思路可前往查看http://www.wwlib.cn/index.php/artread/artid/11584.html0x01Linux主机后门1、添加用户一句话添加用户useraddtest;echo-e"123456n123456n"|passwdtest或者使用openssluseradd-popensslpasswd-1-salt'salt'12......
  • 如何在Linux上配置虚拟主机
    在Linux上配置虚拟主机可以通过使用ApacheHTTP服务器来实现。Apache是一个开源的跨平台的Web服务器软件,可以在多种操作系统上运行并支持虚拟主机的配置。以下是在Linux上配置虚拟主机的步骤:安装ApacheHTTP服务器在终端中运行以下命令来安装Apache:sudoapt-getupdatesu......