使用 zmv 重命名子文件夹中的文件
Renaming files in subfolders using zmv
假设我想使用 zmv 将文件夹的所有子文件夹中的所有文件从 foo.txt
重命名为 bar.txt
。
我试过 zmv '**/foo.txt' 'bar.txt'
但这会在根文件夹中创建 bar.txt
。如何将文件保存在相应的子文件夹中?
您需要引用目标中的目录部分。您可以通过将通配符放在括号中并使用 </code> 来引用括号组匹配的部分来做到这一点。 <code>**
通配符有点特殊,要求括号在**/
左右,不多也不少。
zmv '(**/)foo.txt' 'bar.txt'
您可以使用 -w
标志让每个通配符自动成为括号组。
zmv -w '**/foo.txt' 'bar.txt'
或者您可以使用 -W
标志并在替换文本中使用通配符 — 使用此标志,替换文本中的通配符将变为 </code>、<code>
等.
zmv -W '**/foo.txt' '**/bar.txt'
或者,您可以使用 $f
来引用源路径。
zmv '**/foo.txt' '$f:r.txt'
假设我想使用 zmv 将文件夹的所有子文件夹中的所有文件从 foo.txt
重命名为 bar.txt
。
我试过 zmv '**/foo.txt' 'bar.txt'
但这会在根文件夹中创建 bar.txt
。如何将文件保存在相应的子文件夹中?
您需要引用目标中的目录部分。您可以通过将通配符放在括号中并使用 </code> 来引用括号组匹配的部分来做到这一点。 <code>**
通配符有点特殊,要求括号在**/
左右,不多也不少。
zmv '(**/)foo.txt' 'bar.txt'
您可以使用 -w
标志让每个通配符自动成为括号组。
zmv -w '**/foo.txt' 'bar.txt'
或者您可以使用 -W
标志并在替换文本中使用通配符 — 使用此标志,替换文本中的通配符将变为 </code>、<code>
等.
zmv -W '**/foo.txt' '**/bar.txt'
或者,您可以使用 $f
来引用源路径。
zmv '**/foo.txt' '$f:r.txt'