我意识到我已经以逐个方式命名了一堆文件,所以我想将任何以“1”开头的文件重命名为以 2 开头的相同名称。
例如mv 1.4.5.txt 2.4.5.txt
或mv 1-chart.jpg 2-chart.jpg
等等。
我尝试过,但是由于它被解释为目录mv 1* 2*
所以不被接受。2*
答案1
通配符不起作用。看看 的结果echo mv 1* 2*
。更好的方法是 ( man rename
):
rename 's/^1/2/' 1*
答案2
如果您安装的话,您可以用这种方式使用通配符mmv
(尽管它们必须被引用 - 这样它们由其mmv
本身而不是 shell 来解释),并且替换通配符采用以下形式#n
来重新替换模式中的第 n 个通配符:
Usage: mmv [-m|x|r|c|o|a|l] [-h] [-d|p] [-g|t] [-v|n] [from to]
Use #[l|u]N in the ``to'' pattern to get the [lowercase|uppercase of the]
string matched by the N'th ``from'' pattern wildcard.
A ``from'' pattern containing wildcards should be quoted when given
on the command line. Also you may need to quote ``to'' pattern.
Use -- as the end of options.
例如
$ mmv -n -- '1*' 2#1
1.sh -> 2.sh : delete old 2.sh? n
1-chart.jpg -> 2-chart.jpg
1.4.5.txt -> 2.4.5.txt
1.csv -> 2.csv
(该-n
选项允许您进行试运行 - 将其删除以实际重命名文件。)