使用zmv

时间:2016-02-05 17:24:37

标签: linux zsh

我想说我想使用zmv将文件夹的所有子文件夹中的所有文件从foo.txt重命名为bar.txt

我已尝试zmv '**/foo.txt' 'bar.txt',但这会在根文件夹中创建bar.txt。如何将文件保存在相应的子文件夹中?

1 个答案:

答案 0 :(得分:1)

您需要引用目标中的目录部分。您可以通过将通配符放在括号中并使用$1来引用括号组匹配的部分来实现。 **通配符有点特殊,要求括号在**/附近,不多也不少。

zmv '(**/)foo.txt' '${1}bar.txt'

您可以使用-w标志将每个通配符自动转换为括号组。

zmv -w '**/foo.txt' '${1}bar.txt'

或者您可以使用-W标记并在替换文本中使用通配符 - 使用此标记,替换文本中的通配符将变为$1$2等。< / p>

zmv -W '**/foo.txt' '**/bar.txt'

或者,您可以使用$f来引用源路径。

zmv '**/foo.txt' '$f:r.txt'