根据命名模式删除文件夹

tbenz9

我有400个具有以下模式的文件夹的列表:

backup_01_01_2013/
backup_01_02_2013/
backup_01_03_2013/
...
backup_08_25_2014/

每天通过cron作业创建一个新文件夹。

我要删除所有文件夹,但:

  • 保留30个最新文件夹
  • 保持每月的第一天

如何在Linux中使用Bash删除所有不必要的文件夹?

冰山

因此,假设它们都在同一目录中。

我要指出的是,我测试了该脚本的一部分,但不是全部,所以您可能要在实际运行它之前进行一些修改/测试,以免最终删除所有目录。

# Find the date 30 days ago.
recent_dirs=`date -d "-30 days" +%d-%m-%Y`
rec_month=`echo "${recent_dirs}" | cut -d '-' -f2`
rec_day=`echo "${recent_dirs}" | cut -d '-' -f1`
rec_month=`echo "${recent_dirs}" | cut -d '-' -f3`

# Go to your "home" directory for the directories.
cd /path/to/home/directory

for i in *; do
    # Check to see if the element is a directory.
    if [ -d "${i}" ]; then
        echo "Processing directory - ${i} ... "
        # Determine the date information for the directory.
        cur_month=`cat "${i}" | cut -d '_' -f1`
        cur_day=`cat "${i}" | cut -d '_' -f2`

        # Keep all directories from the first of the month.
        if [ "${first_day}" -eq "01" ]; then continue; fi

        # Keep all directories from the current month and current year.
        if [ "${cur_month}" -eq "${rec_month}" ]; then
            if [ "${cur_year}" -eq "${rec_year}" ]; then continue; fi
        fi

        # Keep all directories from last month, but newer than today's DAY.  I'm not 
        #  a pro at bash arithmetic, so you might have to goof with the subshell 
        #  math to get it to work quite right.
        if [ "${cur_month} -eq $(( expr $rec_month - 1 )) ]; then
            if [ "${cur_day}" -gt "${rec_day}" ]; then continue; fi
        fi

        # So at this point, I think we've dealt with everything, except the case where
        #  the current month is January, and so you're trying to save December's 
        #  directories from last year.  I think this handles it.

        if [ "${rec_month}" -eq "01" ]; then
            if [ "${cur_month} -eq "12" ]; then
                if [ "${cur_year}" -eq $(( expr ${rec_year} - 1 )) ]; then continue; fi
            fi
        fi

        # If we haven't stopped processing the directory by now, it's time 
        #   remove our directory.
        rm -fr "${i}"
     else
        echo "Skipping non-directory "${i}"...
 do

1号出口

这样做不会处理31天的几个月,因此在很多情况下您可能会保存31个目录,而不是30个目录。我的印象是,您正在尝试进行清理,而不是严格遵守常规,但是...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

删除 Windows 路径中具有特定命名模式的文件夹

来自分类Dev

左键单击时文件夹和文档进入重命名模式

来自分类Dev

删除文件-根据文件名模式保持最新

来自分类Dev

锁定文件命名模式

来自分类Dev

rsync与文件夹和文件名模式匹配以复制文件

来自分类Dev

根据文件内容重命名文件文件夹

来自分类Dev

根据字典以CSV文件的形式重命名文件夹?

来自分类Dev

根据文件夹名称重命名文件

来自分类Dev

根据文件夹名称重命名文件

来自分类Dev

在命名文件或文件夹时删除字符

来自分类Dev

使用foreach循环重命名文件夹匹配模式

来自分类Dev

重命名,根据新名称创建文件夹

来自分类Dev

根据列表重命名多个文件夹

来自分类Dev

删除具有特定模式的文件夹中的文件

来自分类Dev

删除public_html中的特殊命名文件夹

来自分类Dev

如何从github删除重命名的文件夹

来自分类Dev

防止在Windows中删除/移动/重命名文件夹

来自分类Dev

使用模式匹配删除Windows文件夹

来自分类Dev

在Windows中以递归方式删除文件夹同步模式

来自分类Dev

Linux如何根据子文件夹删除文件夹

来自分类Dev

使用 R 中的函数从多个文件夹中复制相同的文件并根据文件夹结构重命名文件

来自分类Dev

如果文件夹名称重复,如何根据上传的文件自动重命名文件夹

来自分类Dev

如何根据文件名模式使用最近的文件?

来自分类Dev

根据文件所在的文件夹移动和重命名文件

来自分类Dev

根据另一个文件的存在来重命名文件夹中的文件

来自分类Dev

Powershell-重命名文件夹中的特定文件-根据之前的最新文件

来自分类Dev

目录中的文件夹数组,并在每个文件夹中显示文件,重命名/删除选项

来自分类Dev

Windows CMD-根据文件夹名称重命名文件

来自分类Dev

bash 可以根据文件数量重命名文件夹吗?

Related 相关文章

  1. 1

    删除 Windows 路径中具有特定命名模式的文件夹

  2. 2

    左键单击时文件夹和文档进入重命名模式

  3. 3

    删除文件-根据文件名模式保持最新

  4. 4

    锁定文件命名模式

  5. 5

    rsync与文件夹和文件名模式匹配以复制文件

  6. 6

    根据文件内容重命名文件文件夹

  7. 7

    根据字典以CSV文件的形式重命名文件夹?

  8. 8

    根据文件夹名称重命名文件

  9. 9

    根据文件夹名称重命名文件

  10. 10

    在命名文件或文件夹时删除字符

  11. 11

    使用foreach循环重命名文件夹匹配模式

  12. 12

    重命名,根据新名称创建文件夹

  13. 13

    根据列表重命名多个文件夹

  14. 14

    删除具有特定模式的文件夹中的文件

  15. 15

    删除public_html中的特殊命名文件夹

  16. 16

    如何从github删除重命名的文件夹

  17. 17

    防止在Windows中删除/移动/重命名文件夹

  18. 18

    使用模式匹配删除Windows文件夹

  19. 19

    在Windows中以递归方式删除文件夹同步模式

  20. 20

    Linux如何根据子文件夹删除文件夹

  21. 21

    使用 R 中的函数从多个文件夹中复制相同的文件并根据文件夹结构重命名文件

  22. 22

    如果文件夹名称重复,如何根据上传的文件自动重命名文件夹

  23. 23

    如何根据文件名模式使用最近的文件?

  24. 24

    根据文件所在的文件夹移动和重命名文件

  25. 25

    根据另一个文件的存在来重命名文件夹中的文件

  26. 26

    Powershell-重命名文件夹中的特定文件-根据之前的最新文件

  27. 27

    目录中的文件夹数组,并在每个文件夹中显示文件,重命名/删除选项

  28. 28

    Windows CMD-根据文件夹名称重命名文件

  29. 29

    bash 可以根据文件数量重命名文件夹吗?

热门标签

归档