Linux批量清理多個文件內容而不刪除文件


清理單個文件,可以這樣: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。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM