Linux中find命令的高级用法

find 是一个Linux命令行工具,用于搜索文件系统中的文件和目录。find命令的速度比任何其他命令快。它为更特别的搜索提供了大量的选项。它还支持通配符。每个系统管理员都必须阅读本文并理解find命令的用法。这个命令在日常工作中非常有用。本文将帮助您了解find命令及其在Linux系统中的使用。

语法:在指定的文件系统下搜索文件或目录。

$ find /search/in/dir -name filename

解释:
find => 命令工具
/search/in/dir => 开始搜索的目录
-name => 搜索指定的文件名
filename => 文件名或目录

实例

搜索特定的文件或目录

在根(/)文件系统下搜索任何名为“hello”的文件或目录

$ find / -name hello

只搜索文件

在整个文件系统中搜索名为“backup.zip”的文件(不是目录)。使用 -type f 指定搜索文件和忽视目录。

$ find / -type f -name backup.zip

只搜索目录

在整个文件系统中搜索名为“backup.zip”的目录(不是文件)。使用 -type d 指定目录搜索和忽略文件。

$ find / -type d -name backup

基于文件大小搜索文件

使用find命令搜索所有的文件系统,这是大于或等于10MB

 find / -type f -size +10M

-size:基于文件大小搜索文件。+用于搜比size大,- 用于搜比size晓的文件。

例如:+100MB, -50KB, +1GB etc…

基于文件修改时间的搜索文件。

搜索修改时间超过30天的所有文件。

$ find / -type f -mtime +30

搜索修改时间少于30天的所有文件。

$ find / -type f -mtime -30

基于特定所有者/组搜索文件。

find命令还提供基于用户和用户组的搜索。

例如:搜索由用户 bob 拥有的所有txt文件。

$ find  / -user bob -name "*.txt"

搜索所有 root 用户组的 .txt 文件。

$ find  / -group root -name "*.txt"

如果你想使用下面的命令查看文件的inode号。输出的第一列是一个inode号

$ ls -li tecadmin.txt
30878 -rw-r--r--. 1 root root 0 Mar 22 17:20 tecadmin.txt

用 find 搜索空的文件和目录

这个命令对于搜索空文件和目录非常有用。它对于用空文件和空目录清理系统很有用

$ find / -empty

根据权限搜索文件或目录

在/var/www下,搜索所有具有 777 权限的文件。这将有助于安全审计。

$ find . -perm 777

用文件类型搜索所有文件。

/ 文件系统下搜索所有可用的块特殊文件。

$ find / -type b

其他选项类型如下面:

b – block (buffered) special(特殊块)
c – character (unbuffered) special(特殊字符)
d – directory(目录)
p – named pipe (FIFO)
f – regular file(普通文件)
s – socket(协议)
l – symbolic link(符号链接); this is never true if the -L option or the -follow option is in effect unless the symbolic link is broken. If you want to search for symbolic links when -L is in effect, use -xtype.

使用多个选项查找文件或目录。

您还可以指定多个搜索条件来搜索文件和目录,下面是几个例子来举例。

  1. 搜索所有文件扩展 .txt和尺寸大超过 10MB。
  2. $ find / -type "*.txt" -size +10M

   2. 搜索用户bob拥有的所有文件并文件权限为777

$ find / -user bob -perm 777

用 find 命令 修改文件

查找还提供了在搜索的文件和目录上执行某些命令的选项。这对于shell脚本、系统安全审计等非常有用。

有两种选择可供选择。

-exec: 不要提示确认
-ok: 提示确认

搜索特定的文件并删除它们

在var/www目录下搜索所有带有 .log扩展名文件,并将其删除。

$ find /var/www -name "*.log" -exec rm -f {} ;

参数详解:

-exec: 使用指定命令
rm -f: 在这里可以是任何Linux命令
{}: 相当于含全路径的文件
;: 命令结束

将文件的权限为777进行更改

在/var/www目录下,搜索所有具有777权限可用的文件,并将权限更改为755。

$ find /var/www -type f -exec chmod 755 {} ;

在/var/www目录下,搜索所有具有777权限可用的目录,并将权限更改为644。

$ find /var/www -type d -exec chmod 644 {} ;

from:https://tecadmin.net/uses-of-find-command-in-linux/

0 条评论
发表一条评论