Ввод слова в каждый текстовый файл в папке

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

3 ответа

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

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

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

Еще одна вещь, которую вы можете сделать, это использовать 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 в качестве строки для записи вместо жесткого кодирования "cat" там.

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