我是 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/