Я использовал touch
для единственного создания пустых файлов и нескольких пустых файлов от использования списка cat foo.txt | xargs touch
плюс я натыкался, Как создать несколько файлов с Терминалом? но у меня есть проблемы, выясняющие, как я могу реализовать создание файлов, которые используют шаблон из списка файлов с чистым ударом.
Имена файлов в файле foo.txt:
cpt-one.php
cpt-two.php
cpt-three.php
template.txt:
// lots of code
Есть ли способ, которым я могу использовать touch
создать файл из использования списка, что находится в template.txt вместо того, чтобы создать пустой файл?
bash
-esque способ сделать это (без явного цикла) могло бы быть
, читает имена файлов в переменную типа массив оболочки
mapfile -t files < foo.txt
, или ее синоним readarray -t files < foo.txt
разворачивают массив в tee
, команда
tee < template.txt -- "${files[@]}" > /dev/null
[Эти > /dev/null
является дополнительной - это просто скрывается tee
стандартный вывод по умолчанию от терминала.]
Если у Вас нет тысяч файлов, которые необходимо создать, можно использовать расширение фигурной скобки:
$> touch cpt-{one,two,three}.php
$> ls
cpt-one.php cpt-three.php cpt-two.php
Так как Ваша цель состоит в том, чтобы клонировать шаблон, использовать tee
перенаправить stdin в несколько файлов. tee
записи и в файл и в stdout, таким образом, Вы будете видеть его, отозвались эхом на терминале
$> cat template.txt | tee cpt-{one,two,three}.php
I'm template
С другой стороны, можно было использовать while read
структура. с перенаправлением оболочки.
$> rm *
$> vi inputFile.txt
$> while read FILE; do touch "$FILE" ; done < inputFile.txt
$> ls
cpt-one cpt-three cpt-two inputFile.txt
Обратите внимание, что это - простой пример, который предполагает, что записи в файле не содержат специальных символов
Теперь, так как Вы на самом деле хотите скопировать единственный файл в в несколько, можно использовать ту же структуру, в cp /path/to/template "$FILE"
$> ls
inputFile.txt template.txt
$> cat template.txt
I'm template
$> while read FILE; do cp template.txt "$FILE" ; done < inputFile.txt
$> cat cpt-one.php
I'm template
$>