bash脚本 - 如何检查是否存在以任何一个开头的目录

时间:2016-08-26 11:23:44

标签: bash macos

我一直试图写剧本:

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)结尾的文件夹存在...复制到目标文件夹。

如何正确地写出来?

感谢。

1 个答案:

答案 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开头的目录。