Как скопировать определенный файл несколько раз с обычным окончанием?

Как скопировать определенный файл несколько раз с обычным окончанием?

У меня есть один файл (PDF), и я хочу иметь много идентичных копий в одной папке (было бы хорошо 200) с именами file-001и file-002т. д.

Как мне это сделать?

решение1

Вы могли бы сделать что-то вроде

< file tee file-{001..200}

Однако если носитель станет нечитаемым, то не будет иметь значения, сколько на нем копий — по сути, резервное копирование требуетразнообразие.

Обратите внимание, что teeстандартный ввод записывает в стандартный вывод, а также в каждый из указанных файлов. Для больших файлов или файлов, содержащих двоичные данные или другие специальные символы, которые могут помешать настройкам вашего терминала, вам, вероятно, захочется выгрузить стандартный вывод в битовую ячейку.

< file > /dev/null tee file-{001..200}

решение2

Это классический случай, когда трюки с ракушками очень помогают.

for i in {000..199}; do cp file file-$i; done

ИЯ знаю, это шутка., но если вам нужно случайное число _или -отделение числа от имени, вы можете использовать:

for i in {000..199}; do 
    cp file file$(cat /dev/urandom | tr -dc '_-' | fold -w 1 | head -n 1 )$i; 
done

(несколько строк для удобства чтения...)

:-П

решение3

Чтобы создать один дубликат файла, вы, вероятно, знаете, что можно использовать cp:

cp file file-001

Теперь, чтобы сделать больше дубликатов файла, вы можете объединить cpс xargs. В вашем случае:

echo file-{001..200} | xargs -n 1 cp file

скопирует fileв file-001, file-002,... , . Для получения дополнительной информации file-200см .man xargs

решение4

Как всегда, грузовик-питон прибывает с опозданием, но:

сделайте его исполняемым, перетащите его в окно терминала, перетащите файл для копирования в окно терминала и задайте количество копий:

script file number_ofcopies

Количество начальных нулей устанавливается автоматически, файлы именуются file_001.pdf, file_002.pdf, с указанием номеров файловдорасширение.

Сценарий:

#!/usr/bin/env python3

import sys
import shutil

orig = sys.argv[1]; n = sys.argv[2]; size = len(str(n)); out = (orig[:orig.rfind(".")], orig[orig.rfind("."):])
for item in [out[0]+"_"+(size-len(str(item)))*"0"+str(item)+out[1] for item in range(1, int(n)+1)]:
    shutil.copyfile(orig, item)

Связанный контент