Odpowiedzi:
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
ambiguous redirect
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)
sedis my jam;)
'i\cat'używa ukośnika odwrotnego zamiast ukośnika?
'icat'lub i cat. Wierzę, że odwrotny ukośnik jest konwencjonalny. Nie możesz użyć Forwardlash - zostanie dosłownie wstawiony
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")
sysiteracji modułu do argumentów wiersza poleceń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”.
echo "cat" >> *.txt?