Nic*_*lla 5 shell bash shell-script rename
我试图在我的 shell 中批量重命名一堆文件,即使互联网上有很多关于它的材料,我似乎无法找到适合我的特定情况的解决方案。
我有一堆具有(似乎是)“时间戳 ID”的文件:
abc_128390.png
abc_138493.png
abc_159084.png
...
Run Code Online (Sandbox Code Playgroud)
我想换一个柜台:
abc_001.png
abc_002.png
abc_003.png
...
Run Code Online (Sandbox Code Playgroud)
我(很多)天真的方法是这样的:
mv abc_*.png abc_{001..123}.png
另外,我想不出一种方法让它与for-loop 一起工作。
不幸的rename是,FWIW在这个特定系统上不可用。
任何建议将不胜感激!
我想不出一个以更聪明的方式处理计数器递增的解决方案,但这应该有效:
i=0
for fi in abc_??????.png; do
mv "$fi" abc_$i.png
i=$((i+1))
done
Run Code Online (Sandbox Code Playgroud)
使用它应该是安全的,abc_*.png因为它在第一个mv被执行之前就被扩展了,但是非常具体是有用的,因为您只需要末尾带有六个字符时间戳的文件。
将rename实用程序作为 Perl 包的一部分,您可以:
rename -n 'our $i; s/_.*/sprintf("_%03d.png", $i++)/e' *.png
Run Code Online (Sandbox Code Playgroud)
注意:-n用于试运行,将其删除以重命名应用于文件。
| 归档时间: |
|
| 查看次数: |
14297 次 |
| 最近记录: |