gpt4 book ai didi

linux命令行使用提供的参数重命名所有文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:30:42 26 4
gpt4 key购买 nike

尝试将目录中的所有文件重命名为 $arg[1] + 文件数

例如这些文件:

gfdgfdh.jpg  
fgdsyugfs.jpg
gfyudsfuds.jpg

当我在命令行执行 sh myscript.sh dog 时将变成以下内容:

dog0.jpg
dog1.jpg
dog2.jpg

这是我到目前为止的代码,正则表达式可以工作,因为如果它从命令行尝试对一个文件执行 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程序重命名,这反过来似乎将模式评估为 Perl 代码。

脚本中的另一个错误是 COUNTER=COUNTER+1。 shell 只是不能那样工作。试试这个(未经测试):

#!/bin/sh
prefix=$1

count=0
for f in *.jpg; do
mv "$f" "$prefix$count".jpg
count=`expr $count + 1`
done

关于linux命令行使用提供的参数重命名所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11181796/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com