Сценарий оболочки для добавления текста в каждый файл?

У меня есть папка с текстовыми файлами. Мне нужно добавить к каждому из них один и тот же блок текста (и, конечно же, перезаписать исходный файл).

Мне было интересно, каким будет правильный синтаксис оболочки Bash для этого. Буду ли я использовать кошку?

Я сделал несколько пакетных сценариев, но я не эксперт по Bash. Любые предложения приветствуются.


person Steve    schedule 07.04.2011    source источник
comment
Перезаписать или добавить, оба являются эксклюзивными?   -  person flolo    schedule 08.04.2011


Ответы (4)


Используйте перенаправление добавления.

for f in *.txt
do
  cat footer >> "$f"
done
person Ignacio Vazquez-Abrams    schedule 07.04.2011
comment
OP указывает и, конечно же, перезаписывает исходные файлы, поэтому я подозреваю, что вместо «››» желательно «›». - person William Pursell; 08.04.2011
comment
@wiliam, нет, этот ответ добавляет текст нижнего колонтитула к каждому файлу. вы не хотите стирать фактические данные каждого файла. - person glenn jackman; 08.04.2011
comment
Где footer — это файл, содержащий блок текста, который должен быть добавлен к каждому файлу. - person Andrea Spadaccini; 08.04.2011
comment
Да, то, что сказал Игнасио. Я хочу добавить новый фрагмент текстового файла к каждому из исходных файлов, а затем сохранить их после добавления. Спасибо. - person Steve; 09.04.2011

Если вам нужно сделать это с помощью сценария, вы можете использовать эхо и перенаправление добавления, чтобы добавить дополнительный текст в файлы.

FILES=pathto/*
for f in $FILES ; do
    echo "#extra text" >> $f
done
person GreenMatt    schedule 07.04.2011

Вариант ответа куруми:

sed -i.bak "\$aTEXTTOINSERT" *.txt

Дополнительные сведения см. в разделе SED: вставить что-то в последнюю строку?

person Joe Corneli    schedule 16.04.2013

очень просто тот, который хорошо работал для меня

#!/bin/sh
FILES="./files/*"

for f in $FILES
do
    echo '0000000' | cat - $f > temp && mv temp $f
done
person Prabhu    schedule 25.09.2020
comment
в bash у вас есть оператор ›› pipe, вы должны использовать его - person Tymur Valiiev; 25.09.2020