Linux
linux find 命令 + 刪除除最後 5 個按日期排序的所有快照文件
下
/zookeeper/version-2
,我們有很多zookeeper快照文件. . . -rw-r--r-- 1 zookeeper hadoop 495333240 Aug 3 14:51 snapshot.5d00011991 -rw-r--r-- 1 zookeeper hadoop 495333240 Aug 3 14:53 snapshot.5d00011992 -rw-r--r-- 1 zookeeper hadoop 495333240 Aug 3 14:56 snapshot.5d00011993 -rw-r--r-- 1 zookeeper hadoop 495333235 Aug 4 06:18 snapshot.5d0001e0b4 -rw-r--r-- 1 zookeeper hadoop 495326760 Aug 5 11:54 snapshot.5d0003660f -rw-r--r-- 1 zookeeper hadoop 495335787 Aug 6 08:39 snapshot.5d00047faf -rw-r--r-- 1 zookeeper hadoop 495335268 Aug 7 01:26 snapshot.5d000563eb
我需要按日期對快照文件進行排序,並刪除除最近 5 個快照文件之外的所有快照文件。應保留所有其他不是快照的文件
我創建了以下 cli 語法以刪除除按日期排序的最後 5 個快照文件之外的所有快照文件,但不知道如何將其與
find
命令集成ls -ltr zookeeper/version-2 | grep snapshot | head -n -5 | xargs rm -f
請注意,最終目標是在 cron 作業 ( crontab ) 中設置 find 命令
預期輸出範例
-rw-r--r-- 1 zookeeper hadoop 495333240 Aug 3 14:56 snapshot.5d00011993 -rw-r--r-- 1 zookeeper hadoop 495333235 Aug 4 06:18 snapshot.5d0001e0b4 -rw-r--r-- 1 zookeeper hadoop 495326760 Aug 5 11:54 snapshot.5d0003660f -rw-r--r-- 1 zookeeper hadoop 495335787 Aug 6 08:39 snapshot.5d00047faf -rw-r--r-- 1 zookeeper hadoop 495335268 Aug 7 01:26 snapshot.5d000563eb
直接刪除zookeeper快照可能會對hadoop集群產生不可預知的結果。為此目的有特定的命令:
zkCleanup.sh -n 5
在
zsh
:rm -f /zookeeper/version-2/snapshort.*(N.om[6,-1])
where
om
o
rders bym
odification time (newest first likels -t
does),.
限制為正常文件,N
啟用N
ullglob,[6,-1]
選擇倒數第 6 個。如果文件少於 6 個,rm -f
則不帶參數呼叫,但不應抱怨。