删除除子目录中最新10个以外的所有文件

时间:2015-09-08 07:39:07

标签: linux file find delete-file subdirectory

我有一些BackUp-Files来自将其备份存储在不同文件夹中的计算机。此外,文件不是同时创建的(机器1:每个星期日,机器2:每个月的第一个星期一等)。

我需要在每个文件夹中保留最新的10个文件并删除所有其他文件。由于备份间隔不同,我不能只删除超过x天的所有文件。

文件夹结构如下:

./<SystemType>/<FQDN_Machine1>/backup_2015_09_08_02_00_00.zip
./<SystemType>/<FQDN_Machine2>/backup_2015_09_01_14_00_00.zip

2 个答案:

答案 0 :(得分:0)

IFS='
'
for i in dir/*; do
    ls -d1t $i/* | head -n-10
done | xargs rm

列出除最近十个之外的所有子目录,并按xargs发送给rm

答案 1 :(得分:0)

这是我的解决方案:

#!/bin/bash

cat find ./ -type f | while IFS= read -r line
do
  find "$line" -type f | head -n -10 | while read file
  do
    rm -f "$file"
  done
done