在Linux上使用find -exec命令选项


介绍

Linux 中的find命令是一个用途广泛且功能强大的工具,用于在文件系统中查找文件和目录。“-exec”选项是find命令的一个有用补充,它允许您对find命令找到的任何文件或目录执行命令。这对于查找特定文件然后对其执行操作(例如删除、移动或编辑)非常有用。在本文中,我们将讨论find -exec命令选项的语法和用法,并提供一些使用示例。

语法和用法

使用-exec选项的查找命令的基本语法如下:

$ find [path] [options] -exec [command] {} \;
  • 路径是您要在文件系统中查找的位置。它可以是特定目录或根目录(/)。

  • 选项是您要与查找命令一起使用的任何其他选项。这些选项可能包括查找具有特定权限或所有权的文件、最后修改时间等等。

  • 命令是您要在找到的每个文件或目录上运行的命令。

  • {}是找到的文件或目录的占位符。

  • \;用于终止“-exec”选项。

需要注意的是,-exec选项必须以分号 (;) 结尾,并且此分号必须以反斜杠 (\) 开头,以确保shell正确解释命令。

示例

为了说明find -exec命令选项的用法,让我们来看一些示例。

示例 1

查找主目录中的所有“.txt”文件并显示其名称

$ find ~ -name "*.txt" -exec ls -l {} \;

此命令将搜索主目录中的所有“.txt”文件,并对找到的每个文件执行“ls -l”命令,并将文件的路径作为参数。“ls -l”命令将显示文件名、权限、所有者、大小和其他信息。

示例 2

查找主目录中所有对所有者具有执行权限的文件并将其删除

$ find ~ -perm -u+x -exec rm {} \;

此命令将搜索主目录中所有对所有者具有执行权限的文件,并对找到的每个文件执行rm命令,并将文件的路径作为参数。rm命令将删除文件。

示例 3

查找主目录中最后修改时间超过30天的所有文件并将其移动到备份目录

$ find ~ -mtime +30 -exec mv {} /backup/ \;

此命令将搜索主目录中最后修改时间超过30天的所有文件,并对找到的每个文件执行mv命令,并将文件的路径作为参数。mv命令将文件移动到“/backup/”目录。

注意 - 以上命令的输出特定于运行命令的用户的主目录中存在的文件和目录。对于不同的用户和不同的系统,输出将有所不同。

高级用法

“-exec”选项还可以与其他选项结合使用以执行更复杂的动作。

  • 使用-ok代替-exec将在对每个文件执行命令之前提示用户确认。这对于具有破坏性效果的命令(例如第二个示例中的rm命令)非常有用。

  • -exec选项还可以与“-or”选项结合使用,允许对找到的文件执行各种命令。例如,您可以使用find命令查找所有“.txt”文件,然后使用“-exec”选项对这些文件运行ls“-l”和cat命令。

    $ find ~ -name "*.txt" -exec ls -l {} \; -or -exec cat {} \;
    
  • “-print”选项可以在运行“-exec”选项之前打印每个找到文件的路径。

    $ find ~ -name "*.txt" -print -exec ls -l {} \;
    

结论

find -exec命令选项是用于在文件系统中搜索文件和目录并对其执行操作的强大工具。它可以用于诸如搜索特定文件然后删除、移动或修改它们之类的任务。本文中提供的示例应该可以让您很好地理解如何使用“find -exec”命令选项以及可用的不同选项。通过实践和试验,您可以使用此命令选项来自动化重复性任务并简化您的工作流程。

更新于:2023年1月20日

9K+ 浏览量

开启你的职业生涯

通过完成课程获得认证

开始学习
广告