Назад | Перейти на главную страницу

Как "эхо"> x "на нескольких файлах

Как лучше всего очистить кучу файлов в bash? Насколько я этим занимаюсь

echo "" > development.log
echo "" > production.log

Я действительно не хочу удалять эти файлы, поэтому rm это невозможно. Я пробовал много чего вроде

echo "" > *.log

но ничего не работало.

Вам не нужно эхо. Просто

>filename

очистит файл. Чтобы отредактировать rassie ...

for FILE in *.log
do
   >"${FILE}"
done

Кавычки и скобки предпочтительнее, так как они будут правильно обрабатывать файлы с пробелами или специальными символами в них.

Ради интереса, еще одна вариация, сочетающая Эрика Денниса. find с перенаправлением всех остальных:

find . -name "*.log" -exec sh -c ">{}" \;
for i in *.log; do > $i; done

Обратите внимание, что если вы действительно хотите, чтобы файлы были очищены, вы должны использовать нет эха вообще, см. выше, или передайте echo флаг -n (эхо -n)

Цикл может:

for i in *.log; do echo "" > $i; done
for i in *.log; do cp /dev/null $i; done

Или, если вы хотите рекурсивно:

find . -name "*.log" -exec cp /dev/null {} \;

Это тоже сработает.

find *.txt | awk '{print " " > $1}'