2017-02-01 4 views
0

Я пишу Баш скрипт, и как часть этого, мне нужно сделать следующее:Добавить текст в начале нескольких файлов в нескольких папках

У меня есть как 100 каталогов и их названия в соответствии с их время записи, например, 0, 0.01, 0.02, 0.05 и т. д. Внутри каждого из этих каталогов есть два файла «p» и «U». Как добавить строку в начало этих файлов во всех каталогах?

Спасибо.

+0

Спасибо за комментарий. Я попытался использовать «sed», но моя главная проблема заключается в том, что временные папки несколько произвольны, поэтому я не знаю, как это сделать в каждой папке. – Eman

+0

Покажите свои усилия. – 123

+0

UNIX не имеет папок, вы, вероятно, имеете в виду каталоги. [edit] ваш вопрос, чтобы включить краткий, проверяемый ввод проб и ожидаемый результат. –

ответ

1

Если я правильно понимаю:

for i in `find . -name "[pU]" ` ; do echo "some string 3" > $i.new ; cat < $i >> $i.new ; mv -f $i.new $i; done 
+0

Большое спасибо. Это то, что я искал. – Eman

1

[0-9]*/[pU] - это так же, как файлы 0/p, 0/U, 0.1/p, 0.1/U и т.д.

sed -i '1s/^/newlineContent\n/' [0-9]*/[pU] 
+0

@ Eman - вам следует подумать о принятии ответа на ваши вопросы - не обязательно быть моим - какой бы ответ вам ни помог - [Что делать, если кто-то отвечает на мой вопрос?] (Http://stackoverflow.com/help/someone- ответы) - т. е. сделать правильный знак зеленым –

+0

Большое спасибо. Ваш ответ одинаково хорош, но, к сожалению, мне пришлось выбрать ответ Романа, который он опубликовал ранее. – Eman

+0

это не проблема - до тех пор, пока есть приемлемый ответ, чтобы сообщество узнало, что ваш вопрос разрешен:) –

0

, если я правильно понимаю, в основном вам нужно сделать, это:

1) поместить файлы и папки в отдельные массивы (в зависимости от ваших условий, которые вы укажете с потоком «if»/«else».

так, для файлов: файлов = (~/$ j1/$ 2/TEMP1/*)

2) для цикла по массиву и осязание/мв файлы или то, что вам нужно сделать потом что-то вроде этого:

для i в $ {files [@]};
сделать касание $ 1_yourTextOrValFromFunction

или

кошка ~/$ 1/$ 2/TEMP1/* _ TEMP> 1_yourTextOrValFromFunction

done 
Смежные вопросы