2016-08-26 4 views
0
существует

Я пытался написать сценарий:Баш скрипт - как проверить, если каталог, который начинается с

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 будет искать каталоги (-type d), начиная с именем 10.* в $EFIDIR/EFI/CLOVER/kexts и если найдене будет цикл через каждый в цикле for.

Внутренний цикл for ищет каталоги, начинающиеся с имени *.kext.

+0

Это сделало. Спасибо –

Смежные вопросы