Ответы:
Простое за сделаем работу:
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
?