我试图在我的 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在这个特定系统上不可用。
任何建议将不胜感激!
由于我经常通过网络将不同数量的特定文件复制到(相当复杂的)目标目录中,如果我可以使用cp's-t标志,我的生活会容易得多:有了它,您可以指定目标目录“在开始”——而不是作为最后的论点。
这样,我可以CTRL-R先复制命令,然后再CTRL-W复制以前复制的文件,而不管之前有多少文件,始终保留(复杂的)设置和目标目标系统和目录。
但是我找不到任何合适的标志,无论是 forscp还是 for rsync。(如果其中一个提供此选项,我会使用其中之一。)
做scp或rsync提供类似的东西cp -t?
在绝望中,我什至玩弄了bash的历史控制,尤其是参数提取机制:不幸的是,似乎不可能以“第x个参数到最后一个参数”的形式指定范围。but-one”,这是我需要的,因为我并不总是有参数的数量(除非我计算......)。