Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

What is the best way how to empty a bunch of files in bash? As far I've been doing this

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

I don't really want to delete those files, so rm is not possible. I've tried many things like

echo "" > *.log

but nothing worked.

share|improve this question
up vote 7 down vote accepted

You don't need the echo. Just


will empty the file. To edit rassie...

for FILE in *.log

The quotes and brackets are preferred, as they will correctly handle files with spaces or special characters in them.

share|improve this answer
The one in the loop creates a file called {FILE}. The first quotation mark needs to go before the dollar sign instead of after. – Dennis Williamson Sep 9 '09 at 16:09
Gak! Typo fixed. – kmarsh Sep 9 '09 at 17:43

Just for fun, another variation combining Eric Dennis' find with everybody else's redirection:

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

Note that if you really want the files to be emptied you have to use no echo at all, see above, or pass echo the -n flag (echo -n)

share|improve this answer

A loop could do:

for i in *.log; do echo "" > $i; done
share|improve this answer
We should be using echo with the -n flag to prevent putting a useless \n at the top of the file. – Zimmy-DUB-Zongy-Zong-DUBBY Sep 9 '09 at 15:18
for i in *.log; do cp /dev/null $i; done

Or, if you want to recurse:

find . -name "*.log" -exec cp /dev/null {} \;
share|improve this answer
you miss a ". ( 15 chars here :) ) – drAlberT Sep 9 '09 at 15:52
after log – Dennis Williamson Sep 9 '09 at 16:11

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.