Как скопировать определенный файл несколько раз с регулярным завершением?

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

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

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

 < file tee file-{001..200} 

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

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

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

Это классический случай, когда фокусы для колонок помогают.

 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 

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

:-П

Чтобы создать один дубликат файла, вы, вероятно, знаете, что вы можете использовать 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 для получения дополнительной информации.

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

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

 script file number_ofcopies 

Количество file_001.pdf нулей устанавливается автоматически, файлы называются 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)