【发布时间】:2018-03-06 23:22:24
【问题描述】:
我开发了以下 shell 脚本来查找文件名的重复部分并将其删除。同样,我也需要准备 Perl 脚本,因为 perl 脚本文本处理需要更少的时间。
#!/bin/bash
for i in `ls -t *xml|awk 'BEGIN{FS="_"}{if (++dup[$1] >= 2) print}'`;
do
rm $i
done
我必须准备我的 perl 脚本我的代码,例如只有最近修改的文件名模式
File 1: AAA_555_0000
File 2: AAAA_123_123
File 3: AAAA_452_452 [latest]
File 4: BBB_555_0000
File 5: BBB_555_555
File 6: BBB_999_999 [latest]
File 7: CCC_555_0000
File 8: CCC_000_000
File 9: CCC_000_111 [latest]
Perl 脚本必须在文件夹中的所有文件名模式(意味着文件名的一部分)中选择最新的文件,并且它应该比较并删除重复项。 例如:脚本必须选择 AAA 文件名模式中的最新文件,如果模式发现它必须删除,它必须与其他 AAA 模式进行比较。最后,必须保留所有文件名模式中的最新文件。
如果你能帮助我理解这个逻辑,不胜感激。
非常感谢!
【问题讨论】:
-
什么是“文件名模式”——什么模式?前三个相等的字符?或者以
A开头的那些,然后是B的那些...?请澄清(我的意思是编辑问题以添加解释) -
已回复您。这就是我在 shell 脚本中所做的,也通过在 awk 中使用字段分隔符我得到了文件名的一部分并与其他文件名进行比较。
-
“重复部分”是指前导部分相同还是任何部分? “AAA_555_0000”、“BBB_555_0000”和“CCC_555_0000”有重复的部分。
-
stackoverflow.com/help/someone-answers - 如果您的问题得到解决,请接受答案。不要编辑标题。
标签: perl