Запись слова в каждый txt файл в папке

Как я могу записать слову "кошку" в каждый .txt файл в папке?

10
задан 11 April 2017 в 07:30

3 ответа

Простое для сделает работу:

for i in ./*.txt; do echo 'cat' >> "$i"; done;

Это получит список всех txt файлов в текущем каталоге, циклы всюду по ним и echo кошка в них (добавьте к содержанию). можно измениться >> на >, для перезаписи содержания файлов с кошкой.

Другая вещь, которую можно сделать, использует tee для перенаправления потока в несколько файлов.

Для добавления:

echo "cat" | tee -a *.txt

Для перезаписи:

echo "cat" | tee *.txt
20
ответ дан 23 November 2019 в 04:15

Если файлы не пусты, можно использовать 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)

13
ответ дан 23 November 2019 в 04:15

Подход 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 использования как строку для записи вместо жесткого кодирования "кошки" там.

4
ответ дан 23 November 2019 в 04:15

Другие вопросы по тегам:

Похожие вопросы: