Скопируйте один файл в различные, по-другому именованные папки

У меня есть потребность скопировать один файл от/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.

0
задан 28 February 2018 в 07:41

2 ответа

Хорошо это плохо, потому что cp can copy multiple sources but cannot copy to multiple destinations , который является тем, в чем Вы нуждаетесь. Чтобы это работало, Вы имеете, вызывают CP многократно - однажды на место назначения, которое Вы уже судили. То, что Вы хотите, может быть выполнено [1 111]

1. Используя для цикла

for i in /a/c/ a/d/ a/e/; do cp "$file" "$i"; done

Это - симпатичные самообъясненные шумы.

2. объединение 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, видеть страница справочника .

0
ответ дан 15 April 2019 в 02:16

Это - определенный обман, но Вы могли перенаправить содержание файла нескольким местам назначения, использующим tee:

tee a/{b..d}/file.name < file.name > /dev/null
0
ответ дан 15 April 2019 в 02:16

Другие вопросы по тегам:

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