我在另一个文件夹中有 195 个文件。每个文件的描述前面都有数字和字母的组合,用 [] 括起来。例如:[12hjk534m45] description
。
是否可以用命令删除括号及其内容?
rename
我希望使用命令和语法来实现它[abc]
?
该命令是什么样子的?
答案1
rename -n 's:^\[.*\](.*):$1:' *
[02Rarev]QgysLJF renamed as QgysLJF
[0rwCtGh]cGdxnWH renamed as cGdxnWH
[1B2CMhq]M91oPHh renamed as M91oPHh
[1BMD7N3]0nYVP0b renamed as 0nYVP0b
[1MjkCZu]WBPYXKG renamed as WBPYXKG
[2HoSmD7]aLWLmpf renamed as aLWLmpf
^\[.*\]
从文件开头开始匹配^
括号内的所有内容,括号内的内容后面跟着任何内容(.*)
。因此,(.*)
我们只需在括号后捕获一组仅包含文件描述的内容,然后在s/.../REPLACEMENT/
重命名命令的替换部分中,我使用以下方法将所有文件名替换为描述部分:反向引用捕获组的($1
参考第一个捕获组的索引(.*)
)。
您还可以使用匹配字符类的重命名:
rename -n 's:^\[([0-9A-Za-z]*)\](.*):$1:' *
答案2
有一个非常棒的程序可以做这样的事情,叫做 GPRename,它位于软件中心。
(以下是有关命令的信息:
http://tips.webdesign10.com/how-to-bulk-rename-files-in-linux-in-the-terminal
看起来你想要的东西就在那里,但是你必须弄清楚..或者只是使用 GPRename!
这里也有很好的解释:如何使用命令行轻松地重命名文件?)