📌  相关文章
📜  ubuntu 递归查找文件名 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:05:41.909000             🧑  作者: Mango

Ubuntu 递归查找文件名 - Shell-Bash

在 Ubuntu 上使用命令行界面搜索文件名是非常快捷的方式,而且 find 命令可以帮助我们递归查找指定目录下匹配的文件或目录。

命令语法

使用 find 命令的基本语法如下:

$ find [path] [expression]
  • path :指定要查找的目录或路径,例如:/home/user/
  • expression :查找文件的表达式,包含文件名、文件类型、文件大小等条件。
根据文件名查找

根据文件名来查找是 find 命令中最常用的表达式之一,如下所示:

$ find [path] -name [filename]

例如,查找 /home/user 目录下名为 file.txt 的文件,命令如下:

$ find /home/user -name file.txt
使用通配符

我们还可以使用通配符来匹配文件名中的特定字符,例如:

$ find /home/user -name '*.txt'
$ find /home/user -name 'file*'
$ find /home/user -name '*file*'

上述命令分别可以匹配 .txt 后缀的文件、文件名以 file 开头的文件和文件名中包含 file 的文件。

忽略大小写

在查找时,我们可以使用 -iname 选项来忽略大小写,例如:

$ find /home/user -iname 'FILE.txt'

这样就可以匹配文件名为 file.txtFILE.txt 的所有文件了。

查找特定类型的文件

find 命令也支持根据文件类型查找,例如查找所有的 PNG 格式的图片文件:

$ find /home/user -type f -name '*.png'

在这个命令中,-type 选项指定了只查找类型为文件的项,像目录和符号链接是不包含在内的。

根据文件大小查找

我们可以使用 -size 选项来查找特定大小的文件,例如:

$ find /home/user -size +10M     # 查找大于 10MB 的文件
$ find /home/user -size -10M     # 查找小于 10MB 的文件
$ find /home/user -size 10M      # 查找大小为 10MB 的文件
递归操作

在默认情况下,find 命令会递归查找指定路径下的所有子目录,如果你想要在某个目录下查找文件而不搜索子目录,则需要使用 -maxdepth 选项,例如:

$ find /home/user/Documents -maxdepth 1 -name '*.txt'

这个命令只会查找 /home/user/Documents 目录下一级目录下的 .txt 文件。

安全警告

在使用 find 命令时,请注意避免搜索系统文件,因为修改这些文件可能会导致系统崩溃。可以使用以下命令来避免这种情况:

$ find / -name '*.txt' -not -path '/sys/*' -not -path '/proc/*' -not -path '/dev/*'

在这个命令中,-not -path 选项用于排除系统目录下的文件。

以上就是使用 find 命令在 Ubuntu 中递归查找文件名的方法,希望能帮助你更高效地在命令行中查找文件。