我正在尝试将文件first_second.pdf重命名为first_0second.pdf
因此,我阅读了有关捕获和反向引用的信息。但不知何故,它不起作用。谁能告诉我我在做什么错?
rename 's/\(.*_\)\([1-9]\).pdf$/$10$2.pdf/' first_1.pdf
我希望将first_1.pdf重命名为first_01.pdf
答案 0 :(得分:1)
-n
参数向您展示了在不实际进行测试的情况下将要执行的操作,这对测试非常有用。
匹配并捕获包括下划线在内的第一部分。然后匹配并捕获1个或多个数字,后跟文字点和其他任何字符,直到该行的末尾。替换为第一个捕获的组(将组号与文字“ 0”分开,用大括号括起来),文字“ 0”,然后替换为其余的两个捕获组。
rename -n 's/(.*_)([0-9]+)(\..*)$/${1}0$2$3/' first_1.pdf
rename(first_1.pdf, first_01.pdf)
答案 1 :(得分:0)
问题在于转义字符和大括号包围了后面的引用。这是因为重命名在内部使用posix扩展。如果重命名使用posix-basic作为正则表达式,则必须使用转义符。
通过删除转义符并为后面的引用添加大括号,regex表达式起作用了。
parallel -j 8 --colsep ' ' 'CUDA_VISIBLE_DEVICES=$(({%} - 1)) {}' < commands.txt