如何根据文件夹名称重命名多个文件夹中的.jpg文件?我还希望.jpg
文件保留在各自的文件夹中而不要移动。文件夹名称没有空格。
因此,例如,如果文件夹名称为Red,那么我希望得到的文件名为:
Red000001.jpg
Red000002.jpg
Red000003.jpg
我有以下命令,但它会产生不希望的结果,将重命名的文件移出它们各自的文件夹,并使文件名“草率”:
start=$PWD;
for directory in *; do
cd "$directory";
for filename in *; do
mv "$filename" ../"Folder $directory - $filename";
done;
cd "$start";
done
如果必须cd
进出几个目录,则可以cd -
改用有意义的目录,它会将您带到当前的最后一个工作目录。或者您使用pushd
/ popd
(在中bash
)。
for directory in *; do
pushd "$directory"
index=1
for filename in *; do
extension="${filename##*.}"
if [ "$filename" != "$extension" ]; then
extension=".$extension"
else
# i.e. there is no dot in the file name
extension=""
fi
target_filename="${directory}$(printf "%06d" "$index")${extension}"
if [ -f "$target_filename" ]; then
echo "File ${target_filename} exists; aborting."
exit 3
fi
mv "$filename" "${target_filename}"
((index++))
done
popd
done
这段代码不能很好地处理名称冲突(如果已经有一个文件Red00004
)。它只是检查并中止。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句