清理單個文件,可以這樣:echo > myLog.log
但是,如果我要清理一堆文件,比如在/logs目錄下面的所有以.log結尾的文件的內容,而不刪除文件,該如何操作呢?
我一開始的語句是這樣的:
find /logs -name "*.log" -exec echo > {} \;
但是,運行的結果是新建了一個名為“{}”的文件,並沒有執行清理文件內容的操作。
我詢問了大神之后,我的語句是這樣的:
for i in `find . -name "*.log"`; do cat /dev/null >$i; done
上面語句要在當前目錄執行,也就是,要跳轉到/logs下面執行此語句。
這條語句還可以是:for i in `find . -name "*.log"`; do echo >$i; done
但是用echo >執行的清理文件並非完全為空的,而是有4K大小,而用cat /dev/null >清理的文件內容大小完全為0。