Ubuntu-用户输入的顺序文件命名
我正在尝试创建一个用于重命名图像序列的自定义命令 我正在研究视觉效果,有时不得不按顺序重命名文件 我想导航到保存图像的目录,调用该命令,收到输入文件名前缀的提示(例如{prefix}u%04d.png),并在输入前缀后执行该命令 现在我从另一篇文章中了解到,我可以通过以下方式按顺序重命名文件:Ubuntu-用户输入的顺序文件命名,ubuntu,unix,input,terminal,filenames,Ubuntu,Unix,Input,Terminal,Filenames,我正在尝试创建一个用于重命名图像序列的自定义命令 我正在研究视觉效果,有时不得不按顺序重命名文件 我想导航到保存图像的目录,调用该命令,收到输入文件名前缀的提示(例如{prefix}u%04d.png),并在输入前缀后执行该命令 现在我从另一篇文章中了解到,我可以通过以下方式按顺序重命名文件: for i in *.jpg; do p=$(printf "USERINPUTHERE_%04d.jpg" ${n}) mv ${i} ${p} let n=n+1 done
for i in *.jpg; do
p=$(printf "USERINPUTHERE_%04d.jpg" ${n})
mv ${i} ${p}
let n=n+1
done
但我不确定在完全执行之前如何或是否可能输入命令请求
$ cat cmd.sh
#!/bin/bash
create_file()
{
echo hello > "$1"
echo "created $1"
}
format()
{
printf "%s_%04d.jpg" "$1" "$2"
}
read -p "enter prefix: " PREFIX
i=1
FILE="$(format "$PREFIX" "$i")"
while [ -e "$FILE" ]; do
((i++))
FILE="$(format "$PREFIX" "$i")"
done
create_file "$FILE"
$ ./cmd.sh
enter prefix: hello
created hello_0001.jpg
$ ./cmd.sh
enter prefix: hello
created hello_0002.jpg
$ ./cmd.sh
enter prefix: world
created world_0001.jpg
$ ./cmd.sh
enter prefix: hello
created hello_0003.jpg
$ ls *.jpg
hello_0001.jpg hello_0002.jpg hello_0003.jpg world_0001.jpg
您可以让create_file()
执行任何需要的操作,并format()
按照您的意愿格式化文件名
还要注意,这是一个非常欠优化的实现。如果您计划有许多文件,那么最好记住每个前缀最后创建的文件
尽管如此,接受文件名作为参数而不是提示输入文件名会更有用,因为这样您就可以轻松地在脚本中使用命令。。是,当处理100多幅图像的序列时,欠优化选项不起作用。作为参数的文件名听起来像是我想要的方式。那么,让参数先创建前缀,然后调用命令的其余部分,将顺序编号添加到每个文件中的想法是什么呢?是的。实际上,只需将行
read-p“enter prefix:”prefix
替换为prefix=“$1”
。