運行 find...exec tar czvf 僅歸檔一個檔案...需要所有文件

運行 find...exec tar czvf 僅歸檔一個檔案...需要所有文件

當嘗試運行時

find . -iname "*.gz" -mtime +7 -exec tar czvf all_gizip_$(date +%Y-%m-%d).tar.gz {} \;

我得到文件列表

./corosync.log-20140620.gz
./corosync.log-20140618.gz
./rgmanager.log-20140620.gz
./fenced.log-20140620.gz
./rgmanager.log-20140618.gz
./qdiskd.log-20140618.gz

但存檔只獲取最後一項

 tar -tvf all_gizip_$(date +%Y-%m-%d).tar.gz
-rw-r--r-- root/root       506 2014-06-18 03:21 ./qdiskd.log-20140618.gz

我究竟做錯了什麼?

答案1

tar您的命令針對每個檔案執行一次,並且每次呼叫都會tar建立同名的輸出,從而覆蓋先前的輸出。所以你最終只會得到最後一份文件。你需要類似的東西

find . -iname "*.gz" -mtime +7 | xargs tar czvf all_gizip_$(date +%Y-%m-%d).tar.gz

只要您的文件清單不是很大,這應該可以正常工作。如果是,那麼您可能會希望轉而使用tar rvfgzip在最後執行單獨的步驟。

相關內容