В то время как другие варианты в порядке, я хотел бы исправить некоторые ошибки в вашем подходе:
UserID = $ (CAT $ UIDScript | Cut -C1 -D ':')
:
- C
Получает символы, вам нужно поля . Используйте Cut -F1 -D:
. CUT -F1 -D: <«$ UIDScript»
. Храните результат в массиве, чтобы вы могли легко перейти на него, а другой массив легко:
IFS = $ '\ N' # Split на Newline
set -f # отключить глобальную часть оператора разделения + глобуса
userId = ($ (cut -f1 -d: <"$ uidscript")))
Тогда вы можете зацикливаться по индексам любого массива:
for i in "${!userid[@]}"
do
find . -user "${userid[i]}" -name "${filename[i]}";
done
Есть два варианта. Оба используют rsync
.
Или: Обновляйте только share1
и share2
, удаляя неизвестные файлы в целевой
rsync --dry-run -avP --delete .../src/share1 .../src/share2 .../des/
Или: Обновляйте все в des
, удаляя неизвестные файлы в целевой des1
rsync --dry-run -avP --delete --exclude '/des1' .../src/ .../des/
Когда вас устраивает результат, удаляйте --dry-run
.