find . -type f '(' -name '*.bmp' -o -name '*.jpg' ')' -exec sh -c '
for pathname do
newname="${pathname%/*}_${pathname##*/}" # a/b/c/d.bmp --> a/b/c_d.bmp
newname="target/${newname##*/}" # a/b/c_d.bmp --> target/c_d.bmp
printf "Would move %s to %s\n" "$pathname" "$newname"
# mv -i "$pathname" "$newname"
done' sh {} +
Isso localiza todos os arquivos regulares cujos nomes de arquivos terminam com .jpg
ou .bmp
. Para lotes desses arquivos, um pequeno script de shell é executado.
O shell script extrai o nome do caminho do diretório de cada arquivo, junto com seu nome de arquivo e concatena os dois com um sublinhado no meio. Isso forma o novo nome. O novo nome é cortado de seus diretórios iniciais, deixando apenas o nome do arquivo e um caminho de diretório de destino é anexado a ele.
O% finalmv
é comentado por segurança. Execute esta vez com ele comentou para ver que ele faz a coisa certa.
Relacionados: