У меня есть единственный файл (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
(несколько выравнивают для помощи удобочитаемости...)
:-P
Для создания единственного дубликата файла, Вы, вероятно, знаете, что можно использовать 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_002.pdf
, с filenumbers, помещенным перед расширением.
Сценарий:
#!/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)