如何使用find查找命令

简介: 如何使用find查找命令

Linux查找命令是类Unix操作系统中最重要且最常用的命令行实用程序之一。查找命令可以根据你设定的参数匹配的文件指定的条件来搜索和查找文件或目录的列表。

  • 查找可以在多种条件下使用,例如可以按权限,用户,组,文件类型,日期,大小和其他可能的条件查找文件。

查找具体名称的文件的基本查找命令

  • 在当前目录中使用名称查找文件

例如:在当前工作目录中找到名称为lennlouis.txt的所有文件。

find . -name lennlouis.txt
  • 在指定目录下查找文件

例如:在/home目录下查找lennlouis.txt文件。

find /home -name lennlouis.txt
  • 使用名称查找文件并忽略大小写

例如:在/ home目录中找到所有名称为lennlouis.txt并且包含大写字母和小写字母的文件。

find /home -iname lennlouis.txt
  • 使用名称查找目录

例如:在/目录中找到所有名称为lennlouis的目录。

find / -type d -name lennlouis
  • 使用名称查找PHP文件

例如:在当前工作目录中查找所有php文件中名称为lennlouis.php的文件。

find . -type f -name lennlouis.php
  • 在目录中查找所有PHP文件

例如:在目录中找到所有php文件。

find . -type f -name "*.php"

根据文件权限查找文件

  • 查找具有777权限的文件

例如:查找当前目录所有权限为777的文件。

find . -type f -perm 0777 -print
  • 查找根目录没有777权限的文件

例如:查找所有未经许可的文件777。

find / -type f ! -perm 777
  • 查找具有644权限的SGID文件

例如:查找所有权限设置为644的所有SGID位文件。

find / -perm 2644
  • 查找具有551权限的粘性位文件

例如:查找所有权限为551的Sticky Bit设置文件。

find / -perm 1551
  • 查找SUID文件

例如:查找所有SUID设置文件。

find / -perm /u=s
  • 查找SGID文件

例如:查找所有SGID设置文件。

find / -perm /g=s
  • 查找只读文件

例如:查找所有只读文件。

find / -perm /u=r
  • 查找可执行文件

例如:查找所有可执行文件。

find / -perm /a=x
  • 查找具有777权限并将Chmod设置为644的文件

例如:找到所有777个权限文件,然后使用chmod命令将权限设置为644。

find / -type f -perm 0777 -print -exec chmod 644 {} \;
  • 查找具有777权限目录修改其权限

例如:找到所有777个权限目录,然后使用chmod命令将权限设置为755。

find / -type d -perm 777 -print -exec chmod 755 {} \;
  • 查找并删除单个文件

例如:要找到一个名为lennlouis.txt的文件并将其删除。

find . -type f -name "lennlouis.txt" -exec rm -f {} \;
  • 查找并删除多个文件

例如:要查找并删除多个文件,例如.mp3或.txt后缀的文件。

find . -type f -name "*.txt" -exec rm -f {} \;

或者

find . -type f -name "*.mp3" -exec rm -f {} \;
  • 查找所有空文件

例如:查找特定路径下的所有空文件。

find /tmp -type f -empty
  • 查找所有空目录

例如:将所有空目录归档在特定路径下。

find /tmp -type d -empty
  • 归档所有隐藏的文件

例如:要查找所有隐藏文件,请使用以下命令。

find /tmp -type f -name ".*"

基于所有者和组搜索文件

  • 根据用户查找单个文件

例如:在所有者根目录下查找全部或单个文件lennlouis.txt。

find / -user root -name lennlouis.txt
  • 根据用户查找所有文件

在/home目录下查找属于用户lennlouis的所有文件。

find /home -user lennlouis
  • 根据组查找所有文件

例如:在/home目录下找到属于developer组的所有文件。

find /home -group developer
  • 查找用户的特定文件

例如:在/home目录下找到用户lennlouis的所有后缀为.txt文件。

find /home -user lennlouis -iname "*.txt"

根据日期和时间查找文件和目录

  • 查找最近50天修改的文件

例如:查找最近50天修改的所有文件。

find / -mtime 50
  • 查找最近50天访问的文件

例如:查找最近50访问的所有文件。

find / -atime 50
  • 查找最近50-100天修改的文件

例如:查找超过50天且不到100天的所有已修改文件。

find / -mtime +50 –mtime -100
  • 查找最近1小时内的更改文件

例如:查找最近1小时内更改的所有文件。

find / -cmin -60
  • 查找最近1小时内的修改文件

例如:查找最近1小时内所有已修改的文件。

find / -mmin -60
  • 查找最近1小时内访问的文件

例如:查找最近1小时内访问的所有文件。

find / -amin -60

第五部分:根据大小查找文件和目录

  • 查找50MB文件

例如:要查找所有50MB的文件,请使用。

find / -size 50M
  • 查找大小在50MB – 100MB之间

例如:查找大于50MB且小于100MB的所有文件。

find / -size +50M -size -100M
  • 查找和删除100MB文件

例如:查找所有100MB文件并使用一个命令将其删除。

find / -type f -size +100M -exec rm -f {} \;
  • 查找特定文件并删除

例如:查找所有大小超过10MB的.mp3文件,然后使用一个命令将其删除。

find / -type f -name *.mp3 -size +10M -exec rm {} \;

在Linux中查找多个文件名

  • 要在当前目录中查找带有.sh和.txt文件扩展名的所有文件,可以通过运行以下命令来执行此操作:
find . -type f \( -name "*.sh" -o -name "*.txt" \)
  • 要查找扩展名为.sh,.txt和.c的三个文件名,请发出以下命令:
find . -type f \( -name "*.sh" -o -name "*.txt" -o -name "*.c" \)
  • 这是另一个示例,其中我们搜索扩展名为.png,.jpg,.deb和.pdf的文件:
find /home/lennlouis/Documents/ -type f \( -name "*.png" -o -name "*.jpg" -o -name "*.deb" -o -name ".pdf" \)
相关文章
which-find命令,which cd 指令可以查看指令的存放位置,find命令相当于文件的搜索框,find / -name “test“,从目录 / 开始进行搜索, 按照文件名搜索,搜索test
which-find命令,which cd 指令可以查看指令的存放位置,find命令相当于文件的搜索框,find / -name “test“,从目录 / 开始进行搜索, 按照文件名搜索,搜索test
如何使用Grep命令查找多个字符串
如何使用Grep命令查找多个字符串
571 0
|
Shell Linux C++
linux shell之paste合并文件和找到匹配的文件里面替换内容(find和-exec或xargs组合)
linux shell之paste合并文件和找到匹配的文件里面替换内容(find和-exec或xargs组合)
233 0
|
前端开发 Shell Perl
目录内批量查找替换,我用 tree 替代 find。
最近有需求,需要在编译好的前端文件里,查找替换特定字段。 通常都会想到用 find 找出文件再使用管道输出给 sed。但实际验证下来,包括去 StackOverFlow 上查找,解决方案都不理想。 主要的痛点是:find 对需要忽略的目录路径,处理很麻烦,效果还差异很大。
1296 0
|
安全 Shell