我要做的是:
我希望主文件夹中的每个目录都包含一个共享文件夹,我将放置一些共享文件供所有人阅读。我还将共享文件夹存储在家中。目录结构如下所示:
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
这是正确的方式还是有更好的方法呢?
答案 0 :(得分:2)
您可以将该代码重构为这么短的代码:
shopt -s extglob nullglob
cd /home
for d in !(shared)/; do
[[ ! -e "$d"shared ]] && ln -s "$PWD/shared" "$d"shared
done