У меня есть следующий скрипт bash
#!/bin/bash
for i in `ls /file-directory/ | grep -v static-backup | grep -v fileGroup1 | grep -v fileGroup2`
do
echo $i
rsync --delete -avz --size-only --exclude "$i/stuff1" --exclude "$i/stuff2" --exclude "$i/stuff3" --exclude "$i/stuff4" --exclude "$i/stuff5" --exclude "$i/stuff6" /file-directory/$i otherServer:/file-directory/ && echo " exit code: " $?" $i" || echo " exit code: " $?" $i"
done
Сценарий выполняет итерацию по файловому каталогу и синхронизирует его подкаталоги, исключая определенные файловые группы и части каталогов этих файловых групп. Я хотел бы, чтобы этот сценарий порождал два задания rsync, одно из которых начинается в верхней части каталога, а другое — в нижней. Они будут повторяться в противоположных направлениях и встречаться посередине.
Это относительно просто сделать с обычным подсчетом циклов, и это не будет сложно в чем-то вроде python (вы можете просто сохранить количество каталогов как переменную, а затем выполнить итерацию, используя эту переменную). Как я могу сделать что-то подобное в bash?
for i in $(ls /file-directory/)
прерывается, если какое-либо имя файла содержит символ в IFS или новую строку. 08.09.2018ls
в большинстве случаев является плохой идеей. глобусы оболочки обычно могут обеспечивать ту же функциональность более безопасно и надежно, например.for i in /file-directory/*
08.09.2018