乐趣区

关于linux:通过26个实例掌握-linux-find-命令

find 命令有什么用?

find 命令在 Linux 和 UNIX 零碎中用于查找文件和目录,并可对其执行后续操作。

在 find 命令的帮忙下,系统管理员能够依据一些搜寻条件查找所需的文件。咱们能够应用单个或组合多个规范,而后能够对取得的后果执行操作。可选搜寻条件: 文件名称、目录名称、创立日期、批改日期、属主、权限。

find 命令语法格局:

$ find <path> {file-or-directory-name} <options> <action-on-result>

<action-on-result> 可选项:

  • – delete : 删除文件或目录
  • -exec command {}\; : 依据 find 命令的后果执行命令
  • -ok command : 它将运行与 -exec 雷同的命令,但它将在理论执行之前提醒

(1) 查找当前工作目录下的所有文件和目录

若要只查找目录,请运行

$ find . -type d

若要只查找文件,请运行

$ find . -type f

(2) 列出特定目录下的所有文件

假如咱们要列出 /home/linuxtechi/Downlods 目录下的所有文件和目录,运行

$ find /home/linuxtechi/Downloads

如果只查找文件,请运行

$ find /home/linuxtechi/Downloads -type f

如果只查找目录,请运行

$ find /home/linuxtechi/Downloads -type d

(3) 从目录中按文件名查找文件

要在特定目录中按名称查找文件,请运行

$ sudo find /home -type f -name cleanup.sh

下面的命令将在 /home 文件夹中查找 cleanup.sh 文件。咱们还能够在 /var/log 目录中查找扩大名为 .log 的所有文件,运行

$ sudo find /var/log -type f -name *.log

(4) 在多个目录中查找文件

假如咱们想在 /home 和 /root 文件夹中找到 .sh 扩展名的文件,请运行

$ sudo find /home /root -type f -name '*.sh'

(5) 疏忽文件名大小写

为了查找文件名不受大小写影响,咱们能够在 find 命令中应用 -iname 选项

$ sudo find /home -type f -iname CleanUP.SH
/home/linuxtechi/automation/cleanup.sh
$

(6) 查找除上述类型之外的所有文件类型

假如咱们要查找所有不是上述类型的文件,为此能够在 find 命令中应用 -not 选项,如下所示

$ sudo find /home -type f -not -name '*.mp3'

(7) 应用多个条件查找文件

咱们还能够组合多个条件来应用正则表达式搜寻文件。假如咱们想在主目录中搜寻扩大名为 .sh 和 .mp3 的文件,运行

$ find $HOME -regex ".*\.\(sh\|mp3\)$"

(8) 应用 OR 条件查找文件

咱们还能够组合多个搜寻条件,而后应用 OR 操作符依据一个条件中的任何一个条件的满足来查找文件

$ find $HOME -name "*.sh" -o -name "jumpscripts"
/home/linuxtechi/automation/cleanup.sh
/home/linuxtechi/dumpdata.sh
$

9) 依据权限查找文件

要依据权限查找文件,请在查找命令中应用 - perm 选项。

例如在 /home 目录中查找具备 0777 权限的所有文件,运行

$ sudo find /home -type f -perm 0777

在用户目录查找所有可执行文件

$ find $HOME -type f -perm /a+x

(10) 查找所以暗藏文件

要搜寻用户主目录中的所有暗藏文件,请运行命令

$ find $HOME -type f -name ".*"

(11) 找到所有具备 SGID 的文件

要定位所有具备 SGID 位的文件,咱们能够应用

$ sudo find / -perm /g=s

(12) 找到所有带有 SUID 的文件

要定位所有 SUID 位的文件,运行

$ sudo find / -perm /u=s

(13) 查找所有可读但没有执行权限的文件

若要只查找所有人都可读但任何人都不能执行的文件,请运行

$ find $HOME -perm -a+r \! -perm /a+x

(14) 搜寻几种文件类型

在一个查找命令中,咱们能够搜寻多种文件类型

$ find $HOME -type f,d,l

(15) 查找用户领有的所有文件

To locate all the file that are owned by a particular user in /home directory, run following command,

要找到 /home 目录中属于特定用户的所有文件,请运行以下命令

$ sudo find $HOME -user linuxtechi

(16) 找到一个组领有的所有文件

上面的命令将搜寻 apache 组领有的所有文件。

$ sudo find / -group apache

(17) 按文件大小查找所有文件

Use‘-size’option in find command to search files based on the size.
Run following command to find all files whose size is exactly 50MB.

应用 -size 选项依据文件大小进行搜寻

查找等于 50MB 的文件

$ find $HOME -size 50M
/home/linuxtechi/dbstuff
$

查找大于 50MB 的文件

$ find $HOME -size +50M

查找小于 50MB 的文件

$ find $HOME -size -50M

查找大小在 40MB 到 500MB 之间的文件

$ find $HOME -size +40M -size -500M

(18) 不上行目录到其余文件系统

-xdev 选项列出了另一个文件系统中的挂载点或分区,但它不会向下查找它们。

上面的命令将在 / 目录中搜寻大于 100MB 的所有文件,排除其余挂载的文件系统,重定向谬误音讯到 /dev /null

$ find / -xdev -size +100M 2>/dev/null

(19) 查找 N 天前批改过的文件

假如咱们想要定位 10 天前批改过的所有文件。咱们能够应用 -mtime 选项来实现这一点

$ sudo find / -mtime 10 2>/dev/null

(20) 找出 N 天前被拜访过的文件

假如咱们想要定位 10 天前被拜访过的所有文件。咱们能够应用 -atime 选项来实现这一点

$ sudo find / -atime 30 2>/dev/null

(21) 找到所有的空文件和目录

要在用户主目录中搜寻所有空文件,请运行

$ find $HOME -type f -empty
or 
$ find $HOME -type f -size 0

相似地,定位所有空目录

$ find $HOME -type d -empty

(22) 搜寻和删除文件

应用 find 命令,咱们在单个命令中搜寻和删除文件,-delete 选项能够删除文件。

在上面的例子中,咱们正在从用户的主目录中搜寻并删除 mp3 文件

$ find $HOME -type f -name "*.mp3" -delete

留神: 下面是破坏性命令,执行它时要小心。

(23) 查找最大和最小的文件

To find largest and smallest file, we will combine sort command with find command & if we further want to list top three of those largest files, we will combine head

为了找到最大和最小的文件,咱们将联合 sort 命令和 find 命令,如果咱们进一步想列出最大文件中的前三个,咱们将联合 head 命令列出用户主目录中前三个文件

$ find $HOME -type f -exec ls -s {} \; | sort -n -r | head -3
51200 /home/linuxtechi/dbstuff
8276 /home/linuxtechi/.cache/gnome-software/appstream/components.xmlb
2764 /home/linuxtechi/.local/share/gnome-photos/tracker3/private/meta.db-wal
$

咱们同样能够在用户的主目录中找到最小的文件

$ find $HOME -type f -exec ls -s {} \; | sort -n | head -3

(24) 找到所有日志文件并将它们重定向到一个文件

To run command on find command result use -exec option, it’s syntax given below,

要在查找后果上运行命令,应用 -exec 选项,其语法如下所示

$ find <path> <search-pattern> -exec <command> {} \;

以下命令将找到所有文件,并将其名称重定向到 /tmp/logsfiles.txt

$ sudo find /var -type f -name '*.log' -exec ls -lah {} \; > /tmp/logfiles.txt

(25) 搜寻文件并更改其权限

假如咱们想要搜寻权限为 777 的所有文件,并将其权限更改为 644

$ find $HOME -type f -perm 777 -exec chmod 644 {} \;

(26) 从文件中搜寻文本

Let’s assume we want to search error word in all log files, run following command

假如咱们要在所有日志文件中搜寻带有 error 关键字的文件,运行以下命令

$ sudo find /var -type f -name '*.log' -exec grep -i 'error' {} \;

在下面的命令中,咱们联合了 find 和 grep 命令来实现工作。

我的开源我的项目

  • course-tencent-cloud(酷瓜云课堂 – gitee 仓库)
  • course-tencent-cloud(酷瓜云课堂 – github 仓库)
退出移动版