试图将目录中的所有文件重命名为$arg[1] + number of file
。
例如,这些文件:
gfdgfdh.jpg
fgdsyugfs.jpg
gfyudsfuds.jpg
当我在命令行执行
sh myscript.sh dog
时,将变成以下内容:dog0.jpg
dog1.jpg
dog2.jpg
这是我到目前为止的代码,regex可以工作,因为如果它从命令行对一个文件尝试
rename
命令,它就会工作。#! /bin/sh
COUNTER=0
PREFIX=$1
for i in *.jpg
do
rename 's/.*[^.jpg]/${PREFIX}${COUNTER}/' $i
COUNTER=COUNTER+1
done
我得到的错误是
Global symbol "$PREFIX" requires explicit package name at (eval 1) line 1.
最佳答案
这个错误是由于您将$PREFIX
放在''
中而导致的,它不展开它,而是将它传递给perl程序rename
,而perl程序又似乎将模式作为perl代码来计算。
脚本中的另一个错误是COUNTER=COUNTER+1
。外壳就是不能这样工作。请改为尝试此操作(未经测试):
#!/bin/sh
prefix=$1
count=0
for f in *.jpg; do
mv "$f" "$prefix$count".jpg
count=`expr $count + 1`
done
关于linux - linux命令行使用提供的参数重命名所有文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11181796/