Linux что-то пишет на нескольких файлах - PullRequest
0 голосов
/ 02 января 2009

У меня есть файл "atest.txt", в котором есть текст ...

Я хочу напечатать этот текст в файлах "asdasd.txt asgfaya.txt asdjfusfdgh.txt asyeiuyhavujh.txt"

Эти файлы не существуют на моем сервере ..

Я использую Debian .. Что я могу сделать?

Ответы [ 4 ]

6 голосов
/ 02 января 2009

Используйте команду tee (1), которая дублирует ее стандартный ввод в стандартный вывод и любые файлы, указанные в командной строке. Э.Г.

printf "Hello\nthis is a test\nthank you\n"
  | tee test1.txt test2.txt $OTHER_FILES >/dev/null

Используя ваш пример:

cat atest.txt
  | tee asdasd.txt asgfaya.txt asdjfusfdgh.txt asyeiuyhavujh.txt >/dev/null
1 голос
/ 02 января 2009

Разве это не просто:

cp atest.txt asdasd.txt 
cp atest.txt asgfaya.txt
cp atest.txt asdjfusfdgh.txt
cp atest.txt asyeiuyhavujh.txt

1 голос
/ 02 января 2009

Из вашего приглашения bash:

for f in test1.txt test2.txt test3.txt; do echo -e "hello\nworld" >> $f; done

Если текст находится в atest.txt, тогда выполните:

for f in test1.txt test2.txt test3.txt; do cat atest.txt >> $f; done
1 голос
/ 02 января 2009

В bash вы можете написать

#!/bin/bash
$TEXT="hello\nthis is a test\nthank you"
for i in `seq 1 $1`; do echo -e $TEXT >text$i.txt; done

РЕДАКТИРОВАТЬ (в ответ на изменение вопроса)

Если вы не можете программно определить имена целевых файлов, вы можете использовать этот скрипт:

#!/bin/bash
ORIGIN=$1;
shift
for i in `seq $#`; do cp "$ORIGIN" "$1"; shift; done

Вы можете использовать его следующим образом:
имя_сценария_файл_дисталий_дист_файл1 второй_дест_файл 'третий файл' ...

Если вам интересно, почему в команде cp присутствуют двойные кавычки, она справляется с именем файла, содержащим пробелы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...