pipe ls и awk в rsync

Предположим, что у вас есть массив с именами файлов и вы хотите узнать, какие из них отсутствуют в каталоге, просто пройдитесь циклом по массиву и проверьте, существуют ли файлы. (-f проверяет обычные файлы, -e - файлы любого типа)

files=(file1 file2 file4)
for f in "${files[@]}" ; do 
    [ -f "$f" ] || echo "$f: not found"
done 

Обратный способ аналогичен, но требует двойного цикла или превращения массива в ассоциативный массив. С двойным циклом:

files=(file1 file2 file4)
for f in * ; do
        found=0
        for g in "${files[@]}" ; do
                [ "$f" = "$g" ] && found=1
        done
        [ "$found" = 0 ] && echo "$f: in directory but not listed"
done 
2
17.11.2018, 22:36
0 ответов

Теги

Похожие вопросы