Как лучше всего очистить кучу файлов в 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}'