У меня есть каталог, полный текстовых файлов. Моя цель - добавить текст в начало и конец всех из них. Текст, который идет в начале и в конце, одинаков для каждого файла.
Основываясь на коде, который я получил из Интернета, это код для добавления в начало файла:
echo -e 'var language = {\n$(cat $BASEDIR/Translations/Javascript/*.txt)' > $BASEDIR/Translations/Javascript/*.txt
Это код для добавления в конец файла. Цель состоит в том, чтобы добавить текст };
в конце каждого файла:
echo "};" >> $BASEDIR/Translations/Javascript/*.txt
Примеры, которые я использовал, были для отдельных файлов. Я думал, что попробую действовать на несколько файлов, используя подстановочный знак *.txt
.
Возможно, я делаю и другие ошибки. В любом случае, как добавить текст в начало и конец нескольких файлов?
источник
-i
вместо этого файла подстановка не работает, он просто печатает на стандартный вывод.Попробуйте использовать
ex
:где команды:
bufdo!
выполняет команды ниже для каждого открытого буфера / файла (примечание: это не POSIX )1s/^/HEAD/
- вставляетHEAD
текст в первую строку в начале строки$s/$/TAIL/
- добавляетTAIL
текст в последнюю строку в конце строкии аргументы таковы:
-s
- тихий / быстрый режим-cxa
- сохранить все открытые буферы / файлы и выйти*.foo
- все файлы в текущем каталоге (*
) сfoo
расширением, использованием**/*.foo
для рекурсии (после включения globstar:shopt -s globstar
)источник
С
gnu awk
помощьюinplace
расширения иBEGINFILE
/ENDFILE
:источник
Также имеет право быть (с результатами в
.out
файлах):Другой, более сложный вариант - исходные файлы заменены на результат:
источник
Perl однострочник на помощь:
источник