我想移动并重命名一些jpg图像。它们位于13个不同的文件夹中,命名方式不同。我试着写一个简短的脚本,为我做的工作。不幸的是,第二个for循环不起作用。行echo $ file回应我" IMAGES"而不是图像名称。
#!/bin/sh
path="/Users/fflach/Desktop/Training/Kindernahrung"
k=0
for i in {1..13} ;
do
currentPath="$path $i 1,30 m"
IMAGES="$currentPath/*.jpg"
for file in IMAGES ;
do
k=k+1
moveFile="$currentPath/$file"
echo $file
destination="/Users/fflach/Desktop/Training/New/$k.jpg"
mv $moveFile $destination
done
done
如何更改第二个循环以使其遍历所有.jpg命名图像?
答案 0 :(得分:2)
因为$ currentPath和$ destination变量包含空格必须在双引号之间以避免拆分。
增加k:typeset -i k
和k=k+1
或使用算术((k=k+1))
#!/bin/sh
path="/Users/fflach/Desktop/Training/Kindernahrung"
typeset -i k=0
for i in {1..13} ;
do
currentPath="$path $i 1,30 m"
for file in "$currentPath"/*.jpg ;
do
k=k+1
moveFile=$file
echo "$file"
destination="/Users/fflach/Desktop/Training/New/$k.jpg"
mv "$moveFile" "$destination"
done
done