回答
我已经找到了解决办法,一点阅读的TechNet后。我在最后使用powershell删除没有sufix的文件并保留较新的文件。我喜欢线上线,所以我想出了这个:
Remove-Item ((Get-ChildItem).FullName -match ".+\(2\).+" -replace "(.+)\s\(2\)(.+)",'$1$2')
我敢肯定这不是最好的解决方案,但它的工作。
Perl脚本:
#!/usr/bin/perl
use warnings;
use strict;
my $dir = shift;
for my $file (glob "$dir/*(2)") {
my $original = substr $file, 0, -3;
unlink $original if -f $original;
}
指定目录名作为参数。为了说明,请参阅
感谢您的帮助choroba,最后我找到了一个更简单的解决方案。我试着首先使用bcregrep从bash中得到类似的解决方案,但我无法用多个捕获组替换匹配的字符串。 –
我低估了这个,因为显然有一个版本控制系统,真正的要求是将所有内容更新到最新版本。所以可能有一个'file(4)'和一个'file(6)',它的命运没有人规定。我不认为我们应该将问题作为工作说明书,无论是本人还是提示需求。 – Borodin
名称中没有大于(2)的文件,在这种情况下将不再有文件。原始文件已损坏,并且带有后缀的文件是正确的。 –
- 1. 文件脚本查找版本
- 2. TFS building Resx文件使用更高的.NET Framework版本
- 3. NoSuchMethod错误尝试使用更高版本的JAR文件
- 4. 查找TextLayout组件的文本高度
- 5. 查找最新版本的文件夹
- 6. 编程下载使用Selenium文件(2.46版及更高版本)以下
- 7. 在Azure上找不到'Microsoft.SqlServer.Types'版本10或更高版本
- 8. Assembly'Microsoft.SqlServer.Types'版本10或更高版本无法找到
- 9. 使用ASP.NET查找COM DLL的文件版本
- 10. 查找Microsoft Windows Installer 3.1或更高版本
- 11. 使用PHP或Javascript检查iOS版本是否为3.0或更高版本
- 12. 检查jQuery版本并加载并在需要时使用更高版本
- 13. TabHost不能使用更高版本的Android版本
- 14. Cassandra 3.0及更高版本需要Java 8u40或更高版本
- 15. 使用Xcode 6或更高版本或Application Loader 2.9.1或更高版本提交您的版本
- 16. 找到的最高版本
- 17. 使用SDK版本11或更高版本的Android主屏幕小部件仅
- 18. 使用ant在jar文件中查找java版本的类文件?
- 19. 使用dlopen查找dylib版本
- 20. 查找版本在项目中使用
- 21. 使用MFC查找Visual Studio版本
- 22. 使用powershell查找IIS版本
- 23. 使用grep查找版本号
- 24. 使用powershell查找文件名中编号最高的文件
- 25. 查找以前的更新版本
- 26. 查找angularjs版本
- 27. 版本查找表
- 28. 查找Struts版本?
- 29. 查找GCC版本
- 30. 版本更高到Spring2.0.6.jar
如果您似乎试图自己写一些东西,您将得到更好的答复。你不应该要求你的工作是免费的。 – Borodin
对不起,我做了一些研究,但由于我对任何编码或脚本编程都很陌生,而且我不是母语的人,所以我很满意自己的问题。感谢您提高语法,但您删除了正确的关键字。 –
我想你是在学习,如果你用英语尽力而为,我们大多数人都会理解你。但是你应该阅读Perl几天,并尝试一些你认为可能有用的东西。你很容易写一些你想学习的东西,但是你只问一个解决方案。 – Borodin