Shell

刪除最舊的目錄,跳過其中兩個

  • June 18, 2014

我必須刪除最舊的目錄。但是,此操作中不必“包含”兩個目錄。

因此,目錄內容如下所示:

[root@myserver backup]# ls -la
total 84
drwxr-xr-x 21 root root 4096 Jun 18 04:10 .
drwxr-xr-x 15 root root 4096 Dec 30 11:42 ..
drwxr-xr-x  9 root root 4096 Jan 11 07:25 2013
drwxr-xr-x 13 root root 4096 Jun  4 08:01 2014
drwxr-xr-x  2 root root 4096 Jun 12 04:20 2014-06-12
drwxr-xr-x  2 root root 4096 Jun 13 04:20 2014-06-13
drwxr-xr-x  2 root root 4096 Jun 14 04:20 2014-06-14
drwxr-xr-x  2 root root 4096 Jun 15 04:20 2014-06-15
drwxr-xr-x  2 root root 4096 Jun 16 04:20 2014-06-16
drwxr-xr-x  2 root root 4096 Jun 17 04:20 2014-06-17
drwxr-xr-x  2 root root 4096 Jun 18 04:20 2014-06-18
[root@myserver backup]# 

在這種情況下,必須刪除目錄 2014-06-12,並且不應刪除目錄 2013 和 2014。

我嘗試執行下一個命令:

rm -f 'ls -l | grep 2014\- | head -1'

…但它不會刪除任何內容。

你能幫我如何實現這一目標嗎?

先感謝您!

無論目錄的名稱如何,此命令都有效。

要刪除第三舊的目錄:

ls --sort t -l | grep -v total | awk '{print $9}' | head -n -2 | tail -1 | xargs rm -rf

試試這個:

ls -1tr | grep 2014\- | head -1 | xargs rm -rf

引用自:https://serverfault.com/questions/605963