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.dcm
usando 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