我有一堆像这样命名的文件:
output_1.png
output_2.png
...
output_10.png
...
output_120.png
Run Code Online (Sandbox Code Playgroud)
重命名那些匹配约定的最简单方法是什么,例如最多四位小数,以便命名文件:
output_0001.png
output_0002.png
...
output_0010.png
output_0120.png
Run Code Online (Sandbox Code Playgroud)
这在Unix/Linux/BSD中应该很容易,尽管我也可以访问Windows.任何语言都可以,但我对一些非常简洁的单行(如果有的话)感兴趣.
我在 ubuntu 中运行了一个非常简单的 bash 脚本,但遇到了一个问题。如果需要,我会发布整个脚本,但我已经缩小了问题的范围。基本上,我想每 15 秒运行一次代码,所以我从这个开始:
time=`date +%S`
time2=$((time%15))
if [ $time2 -eq 0 ]
then
Run Code Online (Sandbox Code Playgroud)
等等等等等等....
当时间为 08 秒时出现问题。脚本以非法编号终止:08。添加到,使用时:
time2=$(($time%15))
Run Code Online (Sandbox Code Playgroud)
而不是非法数字错误,它将以算术表达式终止:期望 EOF:“08%15”
我猜 08 不会被解释为一个数字。或者有一些基本问题,比如它认为它是八进制或其他东西。有什么帮助吗?
我试图从BASH数组中删除前导零...我有一个像这样的数组:
echo "${DATES[@]}"
Run Code Online (Sandbox Code Playgroud)
回报
01 02 02 03 04 07 08 09 10 11 13 14 15 16 17 18 20 21 22 23
Run Code Online (Sandbox Code Playgroud)
我想从日期中删除前导零并存储回数组或其他数组,所以我可以迭代另一步...任何建议?
我试过这个,
for i in "${!DATES[@]}"
do
DATESLZ["$i"]=(echo "{DATES["$i"]}"| sed 's/0*//' )
done
Run Code Online (Sandbox Code Playgroud)
但是失败了(对不起,我是一个老Java程序员,负责做一些BASH脚本)
从0到40,有40步?...用于打印 A到Z???
for ((i=000;i<040;i++));do
echo -e $(eval "printf "\\\\%04o" $((65+0$i)) ");
done 2>/dev/null |
xargs
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Run Code Online (Sandbox Code Playgroud)
奇怪!?
共有85个步骤,从70到155:
for ((i=0070;i<0155;i++));do
echo -e $(eval "printf "\\\\%04o" $((19+0$i)) ");
done 2>/dev/null |
xargs
A B C D E F G H I J K L M N O P Q R S …Run Code Online (Sandbox Code Playgroud)