我有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
谢谢。
答案 0 :(得分:0)
UNIX shell命令
ls -t YYY101R1.corp.company.org*
将按年龄顺序列出文件,最新的。抓住第一行作为“最新”并创建一个符号(“软”)链接:
ln -s $latest YYY101R1.corp.company.org.config
对每个文件组重复。
这会让你前进吗?如果没有,请发布您的代码和具体问题的解释。见https://stackoverflow.com/help/mcve
答案 1 :(得分:0)
我得到类似的东西,首先获取按修改时间升序排序的所有文件的列表,然后获取它们的数量,显示所有减去它们的最后2个并将其传递给list以命令删除文件。
ls -tr | wc -l
ls -tr | head -number_of_files_minus_2 | xargs rm
有用吗?
答案 2 :(得分: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-*