簡體   English   中英

按日期刪除文件,並且使用Shell命令將日期與文件名關聯

[英]delete files by date and the date is associated in filename using shell command

我正在學習shell命令,所以這可能是一個瑣碎的問題。 我有一些文件,文件模式為date-text1-text2.xml.gz

范例-

20140201-sometext1-sometext2.xml.gz

我想刪除那些具有與其名稱相關聯的日期且該日期大於特定值的文件。

到目前為止,我所知道的是,我可以使用某種模式來查找和刪除文件,例如

find . -name "2014022*-sometext1-sometext2-*.xml.gz | xargs rm

這將查找和刪除從20140220到20140228的文件。我如何編寫模式,以便它查找和刪除從20140220到今天的所有文件。 這將涉及更高級的腳本編寫還是可以輕松完成?

請注意,日期打印時帶有前導零(即1月為01)會形成數字的單調序列。 一種簡單的方法是在awk中進行過濾。

find . -type f -iname "20*" | awk -vFROM=20140110 '{ if (0+substr($1,3) >= FROM) print $1;}'

您會找到所有與您的模式匹配的文件,通過-v選項將您不想保留的最小數字設置為gawk,然后簡單地比較數字。 您可以在awk單行代碼中實現任意過濾邏輯。 查找的“ ./”部分的substr()印出用於比較。 那里的0+瘋狂程度可確保awk確實比較數字而不是字符串。 丑陋,但有時是必需的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM