我有一个目录,其中包含名为“ o1.ray”至“ o293.ray”的文件。我想将它们从“ o132.ray”重命名为“ o424.ray”时将它们移动到另一个目录。
我如何在终端上做到这一点?
cd directory
for i in {1...293};
do cp o$i.ray subdirectory/o$i+131.ray;
done
我知道这是错误的,因为我得到:
error message 'cp: cannot stat 'o{1...293}.ray': No such file or directory
正如Kusalananda所暗示的那样,这主要是对语法的调整:
for index in {1..293}; do echo mv o"${index}".ray subdirectory/o"$((index+131))".ray; done
echo
当输出看起来正确时,将其删除。
或者,使用zsh的zmv模块:
autoload zmv
zmv -n 'o(<->).ray' 'subdirectory/o$[$1 + 131].ray'
该$[ ... ]
语法执行算术运算;$1
捕获与周围的括号<->
后面的o
。这<->
是一个zsh通配符,它捕获数字范围;没有任何端点,它是开放式的;对于您的情况,您可能会非常具体:
zmv -n 'o(<1-293>).ray' 'subdirectory/o$[$1 + 131].ray'
-n
当输出看起来正确时,将其删除。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句