Ввод слова в каждый текстовый файл в папке
Как я могу написать слово "кошка" в каждый файл.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" там.