2016-02-05 72 views
1

假設我想使用zmv將文件夾中所有子文件夾內的所有文件從foo.txt重命名爲bar.txt使用zmv重命名子文件夾中的文件

我試過zmv '**/foo.txt' 'bar.txt',但是這會在根文件夾中創建bar.txt。我如何將文件保存在其相應的子文件夾中?

回答

1

您需要引用目標中的目錄部分。您可以通過將通配符放在圓括號中,並使用$1來引用由括號組匹配的部分。 **通配符有點特別,並且要求括號大約爲**/,不多不少。

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

您可以使用-w標誌將每個通配符自動生成一個括號組。

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

或者你可以使用-W標誌和置換文本中使用通配符 - 使用此標誌,在替換文本通配符都變成$1$2

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

另外,您可以使用$f來引用源路徑。

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