У меня есть один файл (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)