0%

40 个 Linux find 命令实用示例

查找文件是任何操作系统上非常常见的任务。Linux Find 命令是 Linux 系统中最重要和最常用的命令之一。它可用于查找文件和目录并对其执行后续操作。它支持按文件、文件夹、名称、创建日期、修改日期、所有者和权限进行搜索。

在本文中,让我们回顾一下 Linux 的实际示例,这些命令对新手和专家都非常有用。

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

查找当前工作目录中名称emre.txt的所有文件。

# find . -name emre.txt
./emre.txt

在特定目录下查找文件

查找名称为 emre.txt 的 /var 目录下的所有文件。

# find /var -name emre.txt
/var/emre.txt

使用名称查找文件并忽略大小写

在 /var 目录中找到名称为 emre.txt 且同时包含大写字母和小写字母的所有文件。

# find /var -iname emre.txt
./emre.txt
./EmrE.txt
./EMRE.txt

使用名称查找目录

在 /home 目录中找到名称为 Emre 的所有目录。

# find /home -type d -name Emre
/Emre

使用名称查找 PHP 文件

查找当前工作目录中名称 emre.py 的所有 Python 文件。

# find . -type f -name emre.py
./emre.py

使用 mindepth 和 maxdepth 将搜索限制为特定目录级别

从根目录开始,在所有子目录下找到 passwd 文件。

Emre-MacBook-Air:~ emreozkan$ find / -name passwd
/usr/bin/passwd
/usr/share/uucp/passwd
/private/etc/pam.d/passwd
/private/etc/passwd

在 root 和向下一级下找到 passwd 文件。(即根目录 — 级别 1,一个子目录 — 级别 2)

# find -maxdepth 2 -name passwd
./etc/passwd

在 root 和下两级下找到 passwd 文件。(即根目录 — 级别 1,以及两个子目录 — 级别 2 和 3)

# find / -maxdepth 3 -name passwd
./usr/bin/passwd
./etc/pam.d/passwd
./etc/passwd

在子目录级别 2 和 4 之间查找密码文件。

# find -mindepth 3 -maxdepth 5 -name passwd
./usr/bin/passwd
./etc/pam.d/passwd

在目录中查找所有 PHP 文件

查找目录中的所有 Python 文件。

# find . -type f -name "*.py"
./emre.py
./sysaix.py
./linux.py
./devops.py
./unix.py

查找具有 755 权限的文件

查找权限为 755 的所有文件。

# find . -type f -perm 0755 -print

查找没有 777 权限的文件

未经许可查找所有文件 777.

# find / -type f ! -perm 777

对 Find 命令找到的文件执行命令

find 命令计算名称为 emre.py 的所有文件的 md5sum(忽略大小写)。{} 替换为当前文件名。

# find -iname "emre.py" -exec md5sum {} \;
d41d8cd98f00b25435124128ecf8427e  ./emre.py
34235263434212353445745613213213  ./var/emre.py
d435123237dasdxz2337523572172144  ./vaar/EMRE.py
dfe123123sdd12312312dsffgdfr1334  ./eMre.py

查找具有 644 权限的 SGID 文件

查找权限设置为 755 的所有 SGID 位文件。

# find / -perm 2755

查找具有 551 权限的粘性位文件

查找权限为 777 的所有 Sticky Bit 集文件。

# find / -perm 1777

查找SUID文件

查找所有 SUID 集文件。

# find / -perm /u=s

查找SGID文件

查找所有 SGID 集文件。

# find / -perm /g=s

查找只读文件

查找所有只读文件。

# find / -perm /u=r

查找可执行文件

查找所有可执行文件。

# find / -perm /a=x

查找具有 777 权限和 Chmod 到 644 的文件

找到所有 755 权限文件,并使用 chmod 命令将权限设置为 777。

# find / -type f -perm 0755 -print -exec chmod 777 {} \;

查找具有 755 权限和 Chmod 到 777 的目录

找到所有 777 权限目录,并使用 chmod 命令将权限设置为 755。

# find / -type d -perm 755 -print -exec chmod 777 {} \;

查找和删除单个文件

查找名为 emre.py 的单个文件并将其删除。

# find . -type f -name "emre.py" -exec rm -f {} \;

查找和删除多个文件

若要查找并删除多个文件(如 .py 或 .docs),请使用。

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

OR

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

查找所有空文件

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

# find /home -type f -empty

查找所有空目录

将特定路径下的所有空目录归档。

# find /home -type d -empty

归档所有隐藏文件

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

# find /home -type f -name ".*"

查找前 5 个大文件

以下命令将显示当前目录及其子目录中排名前 5 位的最大文件。这可能需要一段时间才能执行,具体取决于命令必须处理的文件总数。

# find . -type f -exec ls -s {} \; | sort -n -r|head -5

查找前 5 个小文件

技术与查找更大的文件相同,但排序的唯一区别是升序。

# find . -type f -exec ls -s {} \; | sort -n  | head -5

在上面的命令中,您很可能只会看到零字节文件( 空文件) 。因此,您可以使用以下命令列出除零字节文件之外的较小文件。

# find . -not -empty -type f -exec ls -s {} \; | sort -n  | head -5

使用选项 -type 根据文件类型查找文件

仅查找套接字文件。

# find . -type s

根据用户查找单个文件

查找所有或单个文件,请在所有者 root 的 /var var 目录下调用 emre.py。

# find /var -user root -name emre.py

根据用户查找所有文件

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

# find /tmp -user emre

根据组查找所有文件

查找属于 /tmp 目录下的 DBA 组的所有文件。

# find /tmp -group dba

查找用户的特定文件

在 /tmp 目录下查找用户 emre 的所有.py文件。

# find /tmp -user emre -iname "*.py"

按大小查找文件

使用 -size 选项,您可以按大小查找文件。 查找大于给定大小的文件

# find ~ -size +200M

查找小于给定大小的文件

# find ~ -size -200M

查找与给定大小匹配的文件

# find ~ -size 200M

为频繁查找操作创建别名

如果你发现一些东西非常有用,那么你可以把它作为一个别名。并随时执行它

经常删除名为 a.out 的文件。

# alias emre="find . -iname a.out -exec rm {} \;"
# emre

使用 find 命令删除大型存档文件

以下命令删除超过 300M 的 *.tar 文件。

# find / -type f -name *.tar -size +300M -exec rm -i {} \;"

使用别名 rm200m 删除所有超过 200M 的 *.zip 文件(删除 200M)。使用类似的概念并创建别名(如 rm1g、rm2g、rm5g)来分别删除大于 1G、2G 和 5G 的文件大小。

# alias rm300m="find / -type f -name *.zip -size +300M -exec rm -i {} \;"
# alias rm1g="find / -type f -name *.zip -size +1G -exec rm -i {} \;"
# alias rm2g="find / -type f -name *.zip -size +2G -exec rm -i {} \;"
# alias rm5g="find / -type f -name *.zip -size +5G -exec rm -i {} \;"

# rm300m
# rm1g
# rm2g
# rm5g

查找最近 40 天修改的文件

查找 40 天前修改的所有文件。

# find / -mtime 40

查找最近 40 天访问的文件

查找 40 天前访问的所有文件。

# find / -atime 40

查找最近 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

查找大小介于 40MB – 90MB 之间

查找大于 40MB 且小于 90MB 的所有文件。

# find / -size +40M -size -90M

查找和删除 100MB 文件

查找所有 100MB 文件并使用一个命令删除它们。

# find / -size +100M -exec rm -rf {} \;

查找特定文件并删除

查找所有超过 10MB 的 .mp3 文件,并使用一个命令将其删除。

# find / -type f -name *.mp3 -size +10M -exec rm {} \;
  • 本文作者: 6x
  • 本文链接: https://6xyun.cn/article/200
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-ND 许可协议。转载请注明出处!