Ответы:
Простое за сделаем работу:
for i in ./*.txt; do echo 'cat' >> "$i"; done;
Это получит список всех текстовых файлов в текущем каталоге, зацикливается на них и echoперебирает их (добавляет к содержимому). Вы можете изменить , >>чтобы >, чтобы перезаписать содержимое файлов с кошкой.
Другая вещь, которую вы можете сделать, это использовать teeдля перенаправления потока на несколько файлов.
Добавить:
echo "cat" | tee -a *.txt
Перезаписать:
echo "cat" | tee *.txt
ambiguous redirect
Если файлы не пусты, вы можете использовать sedбез зацикливания. Чтобы добавить catв начале:
sed 'i\cat' *.txt
Добавить в конце:
sed 'a\cat' *.txt
Добавить после второй строки:
sed '2 a\cat' *.txt
Чтобы добавить перед строк fooв них:
sed '/foo/ i\cat' *.txt
Это не работает на пустых файлах, хотя. Вид ошибки.
( Для того, чтобы на самом деле писать в файлы после тестирования вам нужен -iвариант: sed -i 'a\cat' *.txt)
sed- мое варенье;)
'i\cat'используется обратная косая черта вместо косой черты?
'icat'или i cat. Я считаю, что обратная косая черта обычная. Вы не можете использовать forwardwardslash - он будет буквально вставлен
Python подход:
#!/usr/bin/env python
import sys
for i in sys.argv[1:]:
with open(i,'w') as fd:
fd.write("cat\n")
sysмодуль для перебора аргументов командной строкиИспользование будет как ./add_cat.py *.txt, которое будет работать со всеми .txtфайлами в текущем рабочем каталоге. Улучшение этого может включать в себя использование аргумента командной строки # 1 в качестве строки для записи вместо жесткого кодирования "cat" там.
echo "cat" >> *.txt?