如标题所述,我正在寻找一个命令/工具-最好是从终端运行的东西(我在远程服务器上使用Ubuntu),它可以一次替换多个目录的特定部分。文件夹结构如下:
Example.of.Structure[app]
Another.Example[app]
Third.Example.of.Structure[app]
我想重命名所有文件夹,以便[app]部分从文件夹名称中删除。
我已经尝试过使用基本RegEx。匹配方括号及其中的文本。
当我将其用于“查找”时,这似乎很好用,但是我真的不确定如何将其放入命令中。
我想出的用于查找括号内文本的正则表达式(包括括号本身)为: \[\w+\]
但是,如何将其放入命令中?
谢谢。
您实际上并不需要正则表达式。一个简单的shell glob加参数扩展即可:
$ for f in *\[*\]/; do echo mv "${f}" "${f/\[*\]}"; done
mv Another.Example[app]/ Another.Example/
mv Example.of.Structure[app]/ Example.of.Structure/
mv Third.Example.of.Structure[app]/ Third.Example.of.Structure/
(echo
一旦您对建议的替换方法是正确的感到满意,请删除)。
如果要使用基于正则表达式的工具,那么基于perl的rename/prename
选择是显而易见的选择:
$ rename -n 's/\[\w+\]//' */
rename(Another.Example[app]/, Another.Example/)
rename(Example.of.Structure[app]/, Example.of.Structure/)
rename(Third.Example.of.Structure[app]/, Third.Example.of.Structure/)
(-n
一旦您对建议的替换方法是正确的感到满意,请删除)。
这两个都与模式的首次出现相匹配。如果该[app]
模式可能出现在其他位置,请查看将匹配项锚定到该模式的末尾。请参见字符串开始和字符串锚定结尾
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句