Как я могу записать слову "кошку" в каждый .txt файл в папке?
Простое для сделает работу:
for i in ./*.txt; do echo 'cat' >> "$i"; done;
Это получит список всех txt файлов в текущем каталоге, циклы всюду по ним и echo
кошка в них (добавьте к содержанию). можно измениться >>
на >
, для перезаписи содержания файлов с кошкой.
Другая вещь, которую можно сделать, использует tee
для перенаправления потока в несколько файлов.
Для добавления:
echo "cat" | tee -a *.txt
Для перезаписи:
echo "cat" | tee *.txt
Если файлы не пусты, можно использовать 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
)
Подход 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 использования как строку для записи вместо жесткого кодирования "кошки" там.