我写了一个文件管理器,我收到了许多实现基于文件复制/重命名的通配符(星号复制/重命名,文件掩码复制/重命名)的请求。我发现自己很困惑,因为我实际上不知道这个功能背后是什么样的算法。我只知道我一直在重命名fileList=['file1.txt', 'file2.txt', 'file3.txt']
,wildcard='*.js'
和fileList
将成为['file1.js', 'file2.js', 'file3.js']
file='noname.txt'
,wildcard mask='note1.txt'
,结果文件为note1.txt。
但我注意到像“abc * .xy”这样的东西也是可能的。它只是让我困惑,如何实现这样的功能?我找不到任何能够详细解释这在Windows / DOS中是如何工作的wiki或docs。这背后的算法有多复杂?我应该寻找点并从那里开始,或者有一些正则表达式搜索或其他什么?
在BASH中,这不起作用,我尝试了mv test.txt *.js
,我得到了一个名为*.js
的文件,但在Windows中,我认为ren test.txt *.js
将按预期工作。
最后我需要一个与此类似的声明函数:
function getCopyRenameFileName(src, mask) // returns new name