Isso deve ser feito:
find / -type f -name '*.dcm' -exec sh -c 'mv -- "$0" "${0%.dcm}"' {} \;
O comando:
- Recurses de
/ - Localiza todos os arquivos com o nome
*.dcm - Executa uma pequena chamada de subshell com um argumento, o nome do arquivo (
{}) - … que renomeia o arquivo (
$0) usandomv -
excluir a correspondência mais curta (
%) de.dcmusando manipulação de string
Coloque um echo na frente de mv para ver o que ele faria.
Se você quiser trabalhar sem o subshell, pode canalizar para while :
find / -type f -name '*.dcm' -print0 | while IFS= read -r -d '' filename; do
mv -- "$filename" "${filename%.dcm}"
done