linux - 保留最近的 3 个文件夹并删除 bash 脚本中的其余文件夹?

标签 linux bash shell sh

我是 shell 脚本新手。您能否建议我一些满足以下要求的代码?

我有以下格式化文件夹

示例:/home/backup/store_id/datewisefolder/some.zip

例如:/home/backup/44/22032014/some_file.zip

  /home/backup/44/23032014/some_file.zip 

  /home/backup/44/24032014/some_file.zip 

   /home/backup/44/25032014/some_file.zip

还有更多..

我想转到每个商店 ID 文件夹并仅保留最近 3 个日期明智的文件夹,其余部分已删除。这里有 44 个存储 id 文件夹 23032014,24032014,25032014 这三个是最近的一个,所以保持原样。 22032014 较旧,因此删除一个。

我编写了 shell 代码来查找最近的三个文件,但我不知道如何使用 store_ID 文件夹循环删除其余文件。

下面的代码找出最近的文件夹日期

cd/home/backup/44/ ls -1 |排序-n -k1.8 -k1.4 -k 1 |尾部-3

最佳答案

ls /home/backup | while read store_id
do
  count=0
  ls -t /home/backup/$store_id | while read dir_to_remove
  do
    count=$((count + 1))
    if [ $count -gt 3 ]; then
      rm -rf /home/backup/$store_id/$dir_to_remove
    fi
  done
done

关于linux - 保留最近的 3 个文件夹并删除 bash 脚本中的其余文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22857704/

相关文章:

bash - Ansible:有什么方法可以使用 ansible 变量或将其传递给我正在部署的 bash 脚本吗?

bash - 当效率很重要时从函数返回值

c - 在 C 程序和 shell 脚本之间共享头文件

c# - 在 linux 终端上运行 C# 代码

linux - 从命令行导入 PostgreSQL CSV

linux - 添加具有指定文件扩展名的文件,其中 basename 存在于目录中

python - 需要帮助来解析文件

linux - 混合远程期望脚本和本地 bash 命令的最佳方法是什么?

arrays - 如何将包含字符 "\n"的多行字符串拆分为 bash 中的字符串数组?

java - Linux Bootstrap 消耗内存