2016-08-26 4 views
0

が存在するかどうかを確認するために、私はスクリプトを記述しようとしてきた:bashスクリプト - どのように始まり、どのディレクトリが

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

http://unix.stackexchange.com/a/100876 –

答えて

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$EFIDIR/EFI/CLOVER/kextsに名前10.*で始まるディレクトリ(-type d)を探し、見つからますでしょうforループ内のすべての1をループ。

内側のforループは、名前*.kextで始まるディレクトリを探します。

+0

それはそれでした。ありがとう –

関連する問題