![通过终端重命名目录中的文件附加三位数字和空格以及不同的扩展名](https://linux22.com/image/184880/%E9%80%9A%E8%BF%87%E7%BB%88%E7%AB%AF%E9%87%8D%E5%91%BD%E5%90%8D%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%E9%99%84%E5%8A%A0%E4%B8%89%E4%BD%8D%E6%95%B0%E5%AD%97%E5%92%8C%E7%A9%BA%E6%A0%BC%E4%BB%A5%E5%8F%8A%E4%B8%8D%E5%90%8C%E7%9A%84%E6%89%A9%E5%B1%95%E5%90%8D.png)
我在目录中有一个文件列表,通过ls
命令显示如下:
01-Campout 2001.jpg
2-Campout 2001.png
Campout 2001 - 3 of 21.tiff
Campout 2001 - 4.pdf
我想知道我可以使用什么 bash 命令来删除当前编号并将其替换为开头具有三位数计数的命名约定,同时保留随后的文本以包括 Campout 和 2001 之间的空格。 .jpeg 和 .png 文件的混合。
我希望最终结果是这样的:
001-Campout 2001.jpg
002-Campout 2001.png
003-Campout 2001.tiff
004-Campout 2001.pdf
非常感谢
答案1
和zsh
:
$ autoload -Uz zmv # best in ~/.zshrc
$ zmv -n '((<1-999>)-(*)|(*) - (<->) of <->(.*)|(*) - (<->)(.*))' '${(l[3][0])${:-$2$5$8}}-$3$4$6$7$9'
mv -- '01-Campout 2001.jpg' '001-Campout 2001.jpg'
mv -- '2-Campout 2001.png' '002-Campout 2001.png'
mv -- 'Campout 2001 - 3 of 21.tiff' '003-Campout 2001.tiff'
mv -- 'Campout 2001 - 4.pdf' '004-Campout 2001.pdf'
(-n
如果满意,请删除(用于空运行))。