我正在使用以下函数将文件从驼峰或帕斯卡大小写重命名为kebab大小写,因为我们将忽略连续的大写字母。
function CamelOrPascalToKebab() {
zmv -Q '(**/)(*[A-Z]*)(/)' '$1${2//(#b)([a-z])([A-Z])/$match[1]-$match[2]}'
zmv -Q '(**/)(*[A-Z][a-z]*)(/)' '$1${2//(#m)[A-Z][a-z]/${(L)MATCH}}'
}
因此,对于以下目录结构
% tree
.
├── DDDDDD
├── EmptyFile
├── EmptyFile.adoc
├── FirstDirToRename
│ ├── DDDDDD
│ ├── EmptyFile
│ ├── EmptyFile.adoc
│ ├── fourthDirToRename
│ ├── SecondDirToRename
│ └── ThisIsDDDDD
├── fourthDirToRename
├── SecondDirToRename
└── ThisIsDDDDD
功能运行后的结果目录结构是
% tree
.
├── DDDDDD
├── EmptyFile
├── EmptyFile.adoc
├── first-dir-to-rename
│ ├── DDDDDD
│ ├── EmptyFile
│ ├── EmptyFile.adoc
│ ├── fourth-dir-to-rename
│ ├── second-dir-to-rename
│ └── this-is-DDDDD
├── fourth-dir-to-rename
├── second-dir-to-rename
└── this-is-DDDDD
现在,我需要一个函数来返回以前的结构。
我认为过程应该很简单
-
-
我正在尝试以下将大写文件名的第一个字符大写
function KebabToPascal () {
zmv -n -Q '(**/)(*-*)(/)' '$1${(U)2:0:1}${2#?}'
}
加工。
完整KebabToPascal
功能可能是什么样?
将文件从烤肉串大小写重命名为pascel大小写的功能
function kebab-to-pascal () {
zmv -Q '(**/)(*-*)(/)' '$1${(U)2:0:1}${2#?}'
zmv -Q '(**/)(*-[a-z]*)(/)' '$1${2//(#m)-[a-z]/${(U)MATCH}}'
zmv -Q '(**/)(*-*)(/)' '$1${2//-##/}'
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句