Копирование всех файлов из каталога, но не определенного файла из подкаталога

zsh не поддерживает синтаксис typeset -A array([key]=value...)из kshи bash.

Вместо этого вы должны просто инициализировать ассоциативный массив, чередуя ключи и значения:

% declare -A map=(8761 "Eureka服务" 11001 "用户微服务")
% echo ${map[8761]}
Eureka服务
2
20.05.2021, 15:53
2 ответа

Это должно работать, исключая только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, если вас устраивает результат сухого прогона -.

3
28.07.2021, 11:30

Если я вас правильно понял, вы хотели пропустить копирование определенного файла (файла -5 )из определенного каталога (папки -1 ), тогда вы можете указать rsync исключить указанный файл следующим образом:

$ rsync -avz -f'- folder-1/file-5' ~/source/ ~/destination/
2
28.07.2021, 11:30

Теги

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