Se você tiver que cd
entrar e sair de vários diretórios, faz sentido usar cd -
, o que leva você ao último diretório de trabalho atual. Ou você usa pushd
/ popd
(em 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
Este código não suporta colisões de nomes (se já houver um arquivo Red00004
). Apenas verifica e aborta.