2017-05-14 25 views
1

我有許多網站的結構像/var/www/domainname.com/log/access.log的日誌文件,我期待着清除它們的內容。我需要找到一個方法來做到這一點的一個命令,但我似乎並沒有做到這一點,我試圖與在centos中遞歸清除文件的內容Linux

find /var/www/ -type f -name "access.log" -exec cat /dev/null > access.log {} \; 

但是這實際上創建了一個新的access.log文件複製所有訪問日誌文件的內容的所有網站。

回答

2

如何:
find /var/www/ -type f -name "access.log" -exec rm {} \; -exec touch {} \;

+0

這將需要每個文件兩個進程。 「truncate」解決方案只需要一個。 – codeforester

+1

@codeforester我的centos沒有'truncate',也沒有我的macOS系統。在_any_系統中可以使用'find','rm'和'touch'。 –

2

可以使用truncate命令,使我們可以一次截斷所有文件:

find /var/www/ -type f -name access.log -exec truncate -c -s 0 {} + 
  • -c確保沒有文件是新
  • -s 0集創建文件大小爲零
  • {} +確保所有文件都是(一直到ARG_MAX)