Я хотел бы скопировать список файлов в форме test/path/to/file/filename.xyz в соответствующий им путь производства prod/path/to/file/filename.xyz. Если путь теста и путь prod одинаковы, за исключением наличия "prod" вместо "test", могу ли я использовать следующую команду? Перезапишет ли это файл назначения?
$ xargs -I % --arg-file=input.txt cp /test/% /prod/%
решение1
Отредактируйте input.txt так, чтобы он выглядел так (обратите внимание на +
)
+ /path/to/file/filename.xyz
Затем,
rsync -amv \
--include '*/' \
--include-from input.txt \
--exclude '*' \
test/ prod/
Вы также можете запустить его напрямую, отредактировав файл «на лету», например:
rsync -amv \
--include '*/' \
--include-from <(sed 's/^/+ /' input.txt) \
--exclude '*' \
test/ prod/
Возможно, вам придется изменить sed
выражение в соответствии с вашими потребностями.