如何在多个文件上“echo”“x”

什么是最好的方法如何清空bash中的一堆文件? 至今我一直在这样做

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

我真的不想删除这些文件,所以rm是不可能的。 我尝试了很多东西

 echo "" > *.log 

但没有任何工作。

你不需要回声。 只是

 >filename 

将清空文件。 编辑rassie …

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

引号和括号是首选,因为它们将正确处理文件中的空格或特殊字符。

只是为了好玩,另一个变化结合埃里克丹尼斯find与其他人的redirect:

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

请注意,如果您真的想要清空这些文件,则必须完全不使用回显 ,请参阅上面的内容或传递-n标志( echo -n

循环可以做到:

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

或者,如果你想recursion:

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