Bash - 检查子目录是否包含文件夹

凯文

我正在尝试做的事情:

我希望主文件夹中的每个目录都包含一个共享文件夹,我将在其中放置一些共享文件供大家阅读。我还将共享文件夹存储在 home 中。目录结构如下所示:

home
---user1
------shared
------someFolder
---user2
------someFolder
---shared

我想确保我没有在其内部插入指向共享文件夹的链接。我还想检查文件夹是否有共享文件夹的链接。如果它已经有一个链接,那么什么都不做。如果它没有链接,则创建一个。

这是我的代码:

for d in */ ; do
    if [ "$d" != "shared/" ]
    then
        shared_exists=false
        for e in "$d"*/; do
            #echo "$e"
            if [ "$e" = $d"shared/" ]
            then
                shared_exists=true
            fi
        done
        if [ "$shared_exists" = true ]
        then
            echo "shared exists in $d"
        else
            echo "Shared does not exist in $d"
            sudo ln -s /home/shared/ /home/"$d"
        fi
    fi
done

这是正确的方法还是有更好的方法?

阿努巴瓦

您可以将该代码重构为更短的代码:

shopt -s extglob nullglob
cd /home

for d in !(shared)/; do
    [[ ! -e "$d"shared ]] && ln -s "$PWD/shared" "$d"shared
done

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

bash列出所有目录,子目录,文件夹,子文件夹,然后输出到单独的文件

bash从特定文件扩展名在文件夹中创建子目录

如何将所有子目录移动到bash中的父文件夹中?

bash列出文件夹中的所有子目录,将它们写入数组以在菜单中使用

bash脚本,该脚本在子目录中找到特定的文件夹并在所有目录中递归创建目录

将 bash 脚本变量传递给 .yml 文件以用作子目录和子目录

Bash脚本运行当前目录或其子目录中包含的几个指定范围的随机文件

Bash脚本遍历子目录并写入文件

Bash - 循环子目录也包括文件

Bash-从子目录移动文件

检查文件夹中是否有任何子目录,并在c#中返回路径

检查Bash中的文件夹大小

sftp:上传文件夹中包含的所有文件,目录和子目录

如何遍历子目录和子目录中的文件,然后在 bash 中打印文件名

检查文件是否在子目录中?

bash脚本递归检查包含两个特定文件的文件夹并打印它们的路径

如果徽标包含特定文件/子目录,则将其放在文件夹图标上

Bash 脚本循环遍历所有子目录,检查脚本目录是否存在,并在那里运行脚本

Bash检查文件夹中的所有文件是否都可被www-data写入

带有不包含文件夹的Xcopy(子目录)

rsync排除包含.git子目录的文件夹(--filter)

Bash / Shell将所有文件从子目录移动到目标目录?

使用bash terminal命令打开目录和子目录中的所有文件?

如何仅在给定目录中查找文件,并使用bash忽略子目录

Bash:遍历目录和子目录(包括隐藏文件)的正确方法是什么?

bash - 遍历子目录、cat 文件并使用目录名重命名

删除特定文件夹的文件和子目录

更改隐藏子目录的文件夹/文件权限

如何下载包含在线文件/文件夹列表中的所有文件和子目录的HTTP目录?