首先,请原谅我的英语很差。
我试图写一个shell脚本来清理我的备份文件夹中的某些类型的文件。
我需要删除某些类型的文件,除了每个文件夹中最新的10个。
文件夹结构是这样的:
根文件夹│├──folder_1│├──file_1.txt│└──file_2.txt│└──file_n.txt│├──folder_2│├──file_1.txt│└──file_2.txt│└──file_n.txt│├──folder_n│├──file_1.txt│└──file_2.txt│└──file_n.txt│
我用过脚本大卫·福斯特把作为一个基础,但不知道如何使它在不同的文件夹单独工作,而不手动写入脚本中的每个文件夹名称。
目前,脚本看起来像这样:
找到/ volume1 rootfolder /类型f - name * . txt printf的% T@ % p \ 0 |——字符串作为反向排序——数值排序字段分隔符=“-键1,1 |呆呆- f ' ' - v RS = ' \ 0的口服补液盐- v = ' \ 0 ' - v retain_count = 10 \ '开始{maxage = systime()——retain_younger_days * 24 * 3600;} (NR > retain_count) & & (int(1美元)< maxage){打印(substr(0美元,长度(1美元)+ 2));}' | xargs -r0——rm——
但问题是它会删除所有文件夹中的所有文件,除了最新的10个。所以,总的来说,我在所有文件夹中只有10个文件,而不是每个文件夹中有10个。
请,帮我弄清楚,如何使脚本处理每个文件夹分开。
zsh
,它具有glob限定符,用于根据修改时间选择文件。看到例如Bash脚本:有条件地删除旧文件,同时保留最新的副本或删除目录中比最近添加的十个文件旧的所有文件