Предположим, что у вас есть массив с именами файлов и вы хотите узнать, какие из них отсутствуют в каталоге, просто пройдитесь циклом по массиву и проверьте, существуют ли файлы. (-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