我一直试图写剧本:
EFIDIR=/Volumes/EFI
KEXTDEST=$EFIDIR/EFI/CLOVER/kexts/Other
if [[ -d $EFIDIR/EFI/CLOVER/kexts/10.* ]]; then
echo "Directory found."
if [[ -d $EFIDIR/EFI/CLOVER/kexts/10.*/*.kext ]]; then
echo "Kext(s) found."
cp -R $EFIDIR/EFI/CLOVER/kexts/10.*/*.kext $KEXTDEST
fi
rm -R $EFIDIR/EFI/CLOVER/kexts/10.*
fi
我想检查是否有任何以" 10开头的文件夹。" (可以是10.10,10.11 ......等)如果这些文件夹中的任何一个包含以(.kext)结尾的文件夹存在...复制到目标文件夹。
如何正确地写出来?
感谢。
答案 0 :(得分:2)
试试这个:
EFIDIR=/Volumes/EFI
KEXTDEST=$EFIDIR/EFI/CLOVER/kexts/Other
for each in $(find $EFIDIR/EFI/CLOVER/kexts/ -name "10.*" -type d); do
echo "Directory found."
for innerdir in $(find $each -name "*.kext" -type d); do
echo "Kext(s) found."
cp -R $innerdir $KEXTDEST
done
rm -R $each
done
find $EFIDIR/EFI/CLOVER/kexts/ -name "10.*" -type d
会在-type d
中查找名称为10.*
的目录($EFIDIR/EFI/CLOVER/kexts
),如果找到则会遍历for
循环中的每个目录。
内部for
循环查找以名称*.kext
开头的目录。