Ame*_*ina 6 zsh filenames rename
我有文件,如
a
bb
ccc
abc
emrls
Run Code Online (Sandbox Code Playgroud)
我想重命名它们,以便在对它们进行排序后(例如,按字典顺序),每个文件都获得以下名称:
00001
00002
00003
etc
Run Code Online (Sandbox Code Playgroud)
其中 0 填充的数字数量是先验指定的,例如在上述情况下为 6(假设我们知道需要多少位数字)。
由于我最熟悉的 shell 是zsh
,我对受益于功能的解决方案感兴趣zsh
(也许使用zsh
's zmv
?)。我也会对与 Bash 兼容的解决方案感兴趣。
Gil*_*il' 11
您可以使用l
参数扩展标志在左侧填充一个数字。
i=0; for x in *; do ((++i)); mv -- $x new/${(l:6::0:)i}; done
Run Code Online (Sandbox Code Playgroud)
有一种相对简单的方法可以仅使用 POSIX 功能来执行此操作:从 1000001(6 位数字)而不是 1 开始编号,然后去掉前导1
. 它不那么直接,但短了几个字符。
i=1000000; for x in *; do i=$((i+1)); mv -- "$x" new/${i#1}; done
Run Code Online (Sandbox Code Playgroud)
如果您想利用zmv
,您可以使用i
在替换文本内递增的算术表达式。
i=0; zmv '*' '${(l:6::0:)$((++i))}'
i=1000000; zmv '*' '${$((++i))#1}'
Run Code Online (Sandbox Code Playgroud)
如果您需要以不同的顺序对文件进行排序,请添加o
glob 限定符。使用zmv
,-Q
当模式包含 glob 限定符时,您需要传递标志。
归档时间: |
|
查看次数: |
1687 次 |
最近记录: |