Відповіді:
Простий для буде виконати роботу:
for i in ./*.txt; do echo 'cat' >> "$i"; done;
У цьому випадку ви отримаєте список усіх txt-файлів у поточній папці, циклічні в них по всій echoкоту і вкажіть їх (додайте до вмісту). Ви можете змінити , >>щоб >, щоб перезаписати вміст файлів з кішкою.
Ще одна річ, яку ви можете зробити, це використовувати teeдля перенаправлення потоку на кілька файлів.
Щоб додати:
echo "cat" | tee -a *.txt
Щоб перезаписати:
echo "cat" | tee *.txt
ambiguous redirect
Якщо файли не порожні, ви можете використовувати їх 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)
sed- це моє варення;)
'i\cat'використовується зворотна косою рисою замість косої риси?
'icat'або i cat. Я вважаю, що зворотна коса риса є звичайною. Ви не можете використовувати форвашерш - він буде буквально вставлений
Підхід 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 в якості рядка для запису замість жорсткого кодування там «кота».
echo "cat" >> *.txt?