将所有以特定扩展名结尾的文件与 shell glob 匹配(例如,所有以 .sh 结尾的文件)

将所有以特定扩展名结尾的文件与 shell glob 匹配(例如,所有以 .sh 结尾的文件)

我希望将所有以特定扩展名结尾的文件与 shell glob 相匹配。

在这种情况下,我希望定位以扩展名结尾的所有文件,这些文件是我在第一行.sh放置“shebang”(如 )后使用 Bash shell 执行的 bourne 文件。#!/bin/bash

例如,这是我的 cron 命令:

0 0 * * * "$HOME"/public_html/cron_daily/myfile.sh 2>/dev/null

相反,我需要将 myfile.sh 定位到该目录中的所有文件,并以.sh扩展名结尾。

下面的代码正确吗?

0 0 * * * "$HOME"/public_html/cron_daily/*$.sh 2>/dev/null

更新

我认为使用 glob 时这很好:

*.{sh}

答案1

您只需使用扩展*.sh名来匹配所有文件.sh。 (根据需要添加路径。)

然而这不会有你想要的结果。查看run-parts从以下位置运行多个脚本cron

0 0 * * * /usr/bin/run-parts "$HOME"/public_html/cron_daily/ 2>/dev/null

(这将运行 中的所有可执行文件.../public_html/cron_daily,而不仅仅是.sh文件。顺便说一句,您确定将 cron 脚本保存在 下是个好主意吗public_html?该目录是否由您的 Web 服务器提供服务?)

答案2

你不能这样做,因为它们将被合并到一个命令行中。

for scr in "$HOME"/public_html/cron_daily/*.sh ; do "$scr" 2> /dev/null; done

相关内容