0

我正在尝试编写一个脚本来检查文件是否存在,如果它不存在,它会使用 644 的权限创建它。如果文件已经存在,它只是确保权限为 644。下面的脚本适用于当前目录的文件。

重点是我可能需要检查 10 个目录并执行相同的操作。

例子

/usr/local/opt/**app1**/logs/test`date '+%Y%m%d'`.log

app1 可以是 5 到 10 个不同的应用程序。该名称是唯一的(不是 app1、app2 等)。文件目录结构的其余部分是统一/标准的。

我可以通过以下方式在当前目录上弄清楚:

if [ -f test`date '+%Y%m%d'`.log ];
then
    chmod 644 test`date '+%Y%m%d'`.log
    echo "File test`date '+%Y%m%d'`.log  exists and now it is readable by all"
else
    echo "File test`date '+%Y%m%d'`.log  does not exists creating"
    touch test`date '+%Y%m%d'`.log
    chmod 644 test`date '+%Y%m%d'`.log
fi

但是当有多个 dir 元素时,我很难过。放置显式 dir 结构不是一个好主意,因为有时会有许多“应用程序”,有时会有不同数量的应用程序。如果文件存在,我只想 chmod 不要触摸,因为它已经有不应删除的数据。

非常感谢任何输入。

谢谢

缺口

4

2 回答 2

0
for app in /usr/local/opt/*/*; do
    log_file=$app/logs/test$(date +%Y%m%d).log

    touch "$log_file"
    chmod 644 "$log_file"
done

请注意,触摸已存在的文件不会删除其数据。触摸已经存在的文件是完全安全的。它只是更新他们的修改时间,仅此而已。

于 2013-04-08T15:38:13.060 回答
0

我不想把所有的代码都写出来,但我会使用find /usr/local/opt -type d管道将其输入grep "/logs/"然后循环遍历结果目录以查找您的测试日志文件。

于 2013-04-08T15:38:16.183 回答