zmv-将目录从kebab情况递归重命名为pascel情况

蓝光

我正在使用以下函数将文件从驼峰或帕斯卡大小写重命名为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

现在,我需要一个函数来返回以前的结构。

我认为过程应该很简单

  1. 大写第一个字符
  2. 之后大写每个字符 -
  3. 移除所有 -

我正在尝试以下将大写文件名的第一个字符大写

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将目录从Pascal或camel情况递归重命名为kebab情况

需要使用zmv递归重命名多个文件

匹配模式后使用zmv命令重命名文件

使用zmv重命名子文件夹中的文件

如何使用正则表达式量词使用zmv重命名多个文件?

从bash调用zmv

PHP:以递归方式将目录中的所有文件重命名为小写

在bash中以递归方式将子目录重命名为新模式

以递归方式将输出 PDF 文件重命名为子目录名称 Powershell

将文件重命名为子目录

如何递归地将目录树重命名为有效的 Windows 文件名?

将多个目录中的文件重命名为目录名

使用查找将目录重命名为回收站目录

将子目录中的pdf文件重命名为子目录的名称

将子目录中的多个文件重命名为其目录名称

递归搜索,将jpg文件复制并重命名为父文件夹名称

递归地将文件夹重命名为@eaDir

递归地将数组键中的大写重命名为破折号和小写

从终端递归将所有文件和文件夹重命名为Title Case

将目录中的所有文件从$ filename_h重命名为$ filename_half?

C#将文件重命名为与其他目录中的文件相同的名称

如何自动将tmux Windows重命名为当前目录

将所有文件和目录重命名为小写(包括 unicode)的脚本

将子目录重命名为不同的日期格式

将目录从“ fname [mname] lname”重命名为“ lname,fname [mname]”

Winrar批处理脚本(略有改动)-将提取的文件重命名为当前目录

Laravel-为什么在.env已经存在的情况下,laravel要求将.env.example重命名为.env?

PHP:在给定子键名称的情况下,将关联数组的键重命名为子元素的值

在终端中将文件重命名为父目录的名称