У меня есть потребность скопировать один файл от/a/b/папки до / счета/, a/d/, a/e/
Помимо использования
CP file.name / CP счета file.name/a/d CP file.name/a/e
в терминале, там способ использовать одну строку? Я считал и видел, что существуют пути, но я думаю, что моя ситуация отличается, как мои имена папки назначения отличаются.
Я также хочу попросить, чтобы это было этим возможный к CP файл в папку назначения и один рекурсивный уровень в. Таким образом, если существует папка, которая имеет a/b/c/d, и Вы отбрасываете его в a, это переходит к b и b/c, и не b/c/d.
Хорошо это плохо, потому что cp can copy multiple sources but cannot copy to multiple destinations
, который является тем, в чем Вы нуждаетесь. Чтобы это работало, Вы имеете, вызывают CP многократно - однажды на место назначения, которое Вы уже судили. То, что Вы хотите, может быть выполнено [1 111]
for i in /a/c/ a/d/ a/e/; do cp "$file" "$i"; done
Это - симпатичные самообъясненные шумы.
cp
с xargs
: $ echo dir1 dir2 dir3 | xargs -n 1 cp file1
скопирует file1 в dir1, dir2, и dir3. xargs назовет CP 3 раза, чтобы сделать это. xargs
вызовет cp
3 раза и скопирует file1 в dir1, dir2 и dir3 в последовательных вызовах.
В Вашем случае это будет
$ echo /a/c/ a/d/ a/e/ | xargs -n 1 cp /a/b/file
Для получения дальнейшей информации о xargs, видеть страница справочника .
Это - определенный обман, но Вы могли перенаправить содержание файла нескольким местам назначения, использующим tee
:
tee a/{b..d}/file.name < file.name > /dev/null