zsh
не поддерживает синтаксис typeset -A array([key]=value...)
из ksh
и bash
.
Вместо этого вы должны просто инициализировать ассоциативный массив, чередуя ключи и значения:
% declare -A map=(8761 "Eureka服务" 11001 "用户微服务")
% echo ${map[8761]}
Eureka服务
Это должно работать, исключая толькоfile-5
из копирования на любом уровне подкаталогов -каталога source
, но не в том случае, если он существует на верхнем уровне:
cd /path/to/source
find. ! -path './*/file-5' -type d,f -exec sh -c '
[ -d "$1" ] && echo mkdir -vp "/path/to/dest/$1" || echo cp -v "$1" "/path/to/dest/$1"
' sh_cp {} \;
Если вы хотите исключить только этот конкретный файл из определенного подкаталога, строго укажите, что вместо этого, как ./folder-1/file-5
, следует исключить только этот файл и только из этого каталога.
удалите echo
перед командами mkdir
и cp
, если вас устраивает результат сухого прогона -.
Если я вас правильно понял, вы хотели пропустить копирование определенного файла (файла -5 )из определенного каталога (папки -1 ), тогда вы можете указать rsync исключить указанный файл следующим образом:
$ rsync -avz -f'- folder-1/file-5' ~/source/ ~/destination/