Как сделать несколько копий каталога с помощью `cp`?

Приложение для наушников позволяет воспроизводить только аудио с YouTube. Он имеет встроенную функцию поиска, где вы можете искать прямо на YouTube. Он также дает вам возможность воспроизводить песни из определенного субреддита. Но при этом открывается маленькое окошко, в котором воспроизводится видео самого низкого качества с YouTube.

Приложение имеет открытый исходный код и доступно в виде файла.deb для Ubuntu, а также для других платформ, таких как Windows и Mac OS.

enter image description here

-3
31.08.2019, 12:18
1 ответ

Синтаксис команды cp::

cp [options] file copy-of-file

Или

cp [options] file1 file2... directory-to-copy-files-into

То есть это может быть копия в или копия в .

В первом синопсисе выше может быть и то, и другое. Это зависит от того, существует ли уже copy-of-fileи является ли он каталогом (или символической ссылкой на каталог ), и в этом случае это копия в или нет, и в этом случае это копия в ¹.

Второй синопсис всегда является копией в . Если directory-to-copy-files-intoне существует или не является каталогом, вы получите сообщение об ошибке.

В вашем случае ваша оболочка расширила:

cp -Rf code code{1..255}

К:

cp -Rf code code1 code2... code255

Итак, вы находитесь во втором случае, скопируйте в и получите сообщение об ошибке, потому что code255не является каталогом, в который cpможет копировать code, code. ],..., code254файлы в.

В любом случае cpне будет делать несколько копий файла. Здесь вам нужно вызвать cpдля каждой копии, которую вы хотите сделать, например, с помощью цикла.

С оболочкой zsh(, откуда исходит этот синтаксис {1..255}):

for f (code{1..255}) cp -R code $f

Или с оболочкой bash(, которая скопировала этот оператор {1..255})и которую вы, вероятно, используете как интерактивную оболочку пользователя по умолчанию в Debian:

for f in code{1..255}; do cp -R code "$f"; done

Другие варианты включают использованиеxargs:

seq 255 | xargs -I{} cp -R code code{}

Или POSIXly (в любой современной shреализации):

i=1; while [ "$i" -le 255 ]; do cp -R code "code$i"; i=$((i + 1)); done

¹, копия в может быть переносима с помощью cp file dir/или с реализацией GNU cpс cp -t dir file. Копия в может быть усилена с помощью GNU cpс помощью cp -T file copy-of-file

.
2
28.01.2020, 05:18

Теги

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