Unix 是否有一种方法可以输入目录中的每个子目录,并对具有特定扩展名的文件执行分析?

Unix 是否有一种方法可以输入目录中的每个子目录,并对具有特定扩展名的文件执行分析?,unix,Unix,我有一个目录,有多个子目录。在每个子目录中都有一个文件,我想对其执行分析(代码已经编写) 所有子目录的共同点是,它们具有相同扩展名的文件,应在该文件上执行分析 使用Unix shell,是否有一种方法可以编写一个命令,该命令将: 对于主目录中的每个子目录,使用具有特定扩展名的文件,并对该文件执行进一步的命令(进一步的命令包括创建一些新的目录和文件) 对主目录中的所有子目录和其中的文件重复此操作 我将感谢所有建议。使用find命令查找-类型f-名称'*.txt'-exec prog\{}\将使

我有一个目录,有多个子目录。在每个子目录中都有一个文件,我想对其执行分析(代码已经编写)

所有子目录的共同点是,它们具有相同扩展名的文件,应在该文件上执行分析

使用Unix shell,是否有一种方法可以编写一个命令,该命令将:

  • 对于主目录中的每个子目录,使用具有特定扩展名的文件,并对该文件执行进一步的命令(进一步的命令包括创建一些新的目录和文件)

  • 对主目录中的所有子目录和其中的文件重复此操作


  • 我将感谢所有建议。

    使用
    find
    命令<代码>查找-类型f-名称'*.txt'-exec prog\{}\将使用当前目录中每个文件的名称执行程序
    prog
    ,并使用扩展名
    .txt
    (即与模式
    *.txt
    匹配)。
    -type f
    不包括目录(以及管道和设备)。
    -exec
    表示执行该命令;
    \{}
    将替换为文件名<代码>\表示命令结束

    如果您的文件名中没有空格、引号或反斜杠,那么这肯定是有效的。如果他们这样做了,它会变得有点棘手:
    find-输入f-name'*.txt'-print0 | xargs-0-n1 prog
    ,假设filename参数位于行的末尾。
    -print0
    表示以空终止(零字符)输出文件,
    -0
    表示以空终止输入文件
    xargs
    接受其输入,并为每个以空结尾的字调用
    prog
    -n1
    表示每次调用仅使用一个参数;如果程序接受多个文件名作为参数,则可以忽略它。如果需要在参数后插入文本,可以使用
    -i


    注意:我知道出于各种模糊的原因使用
    -exec
    对于安全的系统外壳脚本来说可能并不可取,但对于这样的用例来说,这是很好的。

    find
    +
    exec