1
假設我想使用zmv將文件夾中所有子文件夾內的所有文件從foo.txt
重命名爲bar.txt
。使用zmv重命名子文件夾中的文件
我試過zmv '**/foo.txt' 'bar.txt'
,但是這會在根文件夾中創建bar.txt
。我如何將文件保存在其相應的子文件夾中?
假設我想使用zmv將文件夾中所有子文件夾內的所有文件從foo.txt
重命名爲bar.txt
。使用zmv重命名子文件夾中的文件
我試過zmv '**/foo.txt' 'bar.txt'
,但是這會在根文件夾中創建bar.txt
。我如何將文件保存在其相應的子文件夾中?
您需要引用目標中的目錄部分。您可以通過將通配符放在圓括號中,並使用$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'