Wpisywanie słowa do każdego pliku txt w folderze

10

Jak mogę napisać słowo „kot” do każdego pliku .txt w folderze?

Qubix
źródło

Odpowiedzi:

20

Proste dla wykona pracę:

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

Spowoduje to wyświetlenie listy wszystkich plików txt w bieżącym katalogu, pętli w nich i echocat do nich (dołącz do treści). możesz zmienić >>na >, aby zastąpić zawartość plików cat.

Inną rzeczą, którą możesz zrobić, to teeprzekierowanie strumienia do wielu plików.

Dołączyć:

echo "cat" | tee -a *.txt

Aby zastąpić:

echo "cat" | tee *.txt
Ravexina
źródło
jaki jest con do użycia echo "cat" >> *.txt?
hytromo
4
@hakermania, które powinny zawieśćambiguous redirect
Zanna
13

Jeśli pliki nie są puste, możesz użyć ich sedbez zapętlania. Aby dodać catna początku:

sed 'i\cat' *.txt

Aby dodać na końcu:

sed 'a\cat' *.txt

Aby dodać po drugim wierszu:

sed '2 a\cat' *.txt

Aby dodać przed nimi wiersze foo:

sed '/foo/ i\cat' *.txt

Nie działa jednak na puste pliki. Rodzaj błędu.

(Aby właściwie napisać do plików po przetestowaniu potrzebujesz -iopcję: sed -i 'a\cat' *.txt)

Zanna
źródło
Nienawidzę sed :)), bo jest wiele rzeczy, które możesz z tym zrobić i nie jestem ich świadomy :))
Ravexina 11.04.17
@Ravexina sedis my jam;)
Zanna
dlaczego 'i\cat'używa ukośnika odwrotnego zamiast ukośnika?
phuclv
@ LưuVĩnhPhúc ukośnik odwrotny jest w rzeczywistości opcjonalny, możesz także umieścić 'icat'lub i cat. Wierzę, że odwrotny ukośnik jest konwencjonalny. Nie możesz użyć Forwardlash - zostanie dosłownie wstawiony
Zanna
4

Podejście Python:

#!/usr/bin/env python
import sys

for i in sys.argv[1:]:
    with open(i,'w') as fd:
        fd.write("cat\n")
  • używa sysiteracji modułu do argumentów wiersza poleceń
  • każdy argument wiersza poleceń będzie otwarty jako plik do zapisu
  • „cat” z nową linią zostanie zapisany do pliku przed przejściem do następnego

Użycie byłoby takie ./add_cat.py *.txt, które działałoby na wszystkich .txtplikach w bieżącym katalogu roboczym. Ulepszenie tego może obejmować użycie argumentu wiersza polecenia 1 jako ciągu do pisania zamiast na stałe wpisywania „cat”.

Sergiy Kolodyazhnyy
źródło