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

10

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

задан Qubix 11.04.2017 в 13:57
источник

3 ответа

20

Простая для выполнения работы:

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

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

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

Чтобы добавить:

echo "cat" | tee -a *.txt

Чтобы перезаписать:

echo "cat" | tee *.txt
    
ответ дан Ravexina 11.04.2017 в 13:59
13

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

    
ответ дан Zanna 11.04.2017 в 14:15
4

Подход Python:

#!/usr/bin/env python
import sys

for i in sys.argv[1:]:
    with open(i,'w') as fd:
        fd.write("cat\n")
  • он использует модуль sys для перебора аргументов командной строки
  • каждый аргумент командной строки будет открыт как файл для записи
  • «cat» с символом новой строки будет записана в файл перед тем, как перейти к следующему

Использование будет в виде ./add_cat.py *.txt , которое будет работать со всеми .txt файлами в текущем рабочем каталоге. Улучшение этого может включать использование аргумента командной строки # 1 в качестве строки для записи вместо hardcoding «cat».     

ответ дан Sergiy Kolodyazhnyy 11.04.2017 в 17:48