bash:删除文件名中除最后一个版本之外的所有文件

问题描述 投票:0回答:3

我有超过 10K 个文件,如下所示。文件系统日期(导出时间)是所有文件的日期。

YYY101R1.corp.company.org-RUNNINGCONFIG-2015-07-10-23-10-15.config
YYY101R1.corp.company.org-RUNNINGCONFIG-2015-07-11-22-11-10.config
YYY101R1.corp.company.org-RUNNINGCONFIG-2015-10-01-10-05-08.config

LLL101S1.corp.company.org-RUNNINGCONFIG-2015-08-10-23-10-15.config
LLL101S1.corp.company.org-RUNNINGCONFIG-2015-09-11-20-11-10.config
LLL101S1.corp.company.org-RUNNINGCONFIG-2015-10-02-19-05-07.config

如何从文件名中删除除文件的最后版本(最后日期)之外的所有文件并将其重命名为

YYY101R1.corp.company.org.config  
LLL101S1.corp.company.org.config
python bash sh
3个回答
0
投票

我得到了类似的东西,首先获取按修改时间升序排序的所有文件的列表,然后获取它们的数量,显示所有文件减去最后 2 个,并将其传递给列表以删除文件的命令。

ls -tr | wc -l

ls -tr | head -number_of_files_minus_2 | xargs rm

有帮助吗?


0
投票
FLast=`ls -tr 'YYY101R1.corp.company.org*' | tail -n 1`

mv ${FLast} YYY101R1.corp.company.org.config
rm -f YYY101R1.corp.company.org-RUNNINGCONFIG-*

0
投票

UNIX shell 命令

ls -t YYY101R1.corp.company.org*

将按时间顺序列出文件,最新的在前。将第一行作为“最新”并创建一个符号(“软”)链接:

ln -s $latest YYY101R1.corp.company.org.config

对每个文件组重复此操作。

© www.soinside.com 2019 - 2024. All rights reserved.