查找和删除仅保留最新的子文件夹

Flo*_*ild 2 ls shell rm

我正在尝试为给定的文件夹设置一种自动方式,以删除其所有子文件夹,但最近创建的子文件夹。

例如,我只想保留 3 个最近的子文件夹,并删除所有其他子文件夹。

想象一下给定的文件夹:

/some/specific/folder
    /subfolder1
    /subfolder2
    /subfolder3
    /subfolder4
    /subfolder5
    /subfolder6
    /subfolder7
    /subfolder8
    /subfolder9
    /subfolder10
Run Code Online (Sandbox Code Playgroud)

我想删除所有子文件夹,但保留subfolder8,subfolder9subfolder10...

现在,我设法列出了我想保留的文件,但是如何在 shell 命令中“反转”它呢?

cd /some/specific/folder/
ls -tr | head -3

# Gives the following result
subfolder8
subfolder9
subfolder10

# And I am looking for the following :
subfolder1
subfolder2
subfolder3
subfolder4
subfolder5
subfolder6
subfolder7
Run Code Online (Sandbox Code Playgroud)

任何的想法?

lge*_*get 5

如果ls -tr | head -3 给你正确的 3 个文件夹,那么ls -tr | tail -n +4会给你所有其他文件夹(它跳过前 3 行)。