Usandofind
:
find topdir -maxdepth 1 -type d -name '* (Done)' -exec sh -c '
for pathname do
mv "$pathname" "${pathname%" (Done)"}"
done' sh {} +
Esto usa find
para seleccionar los directorios que tienen ␣(Done)
al final de sus nombres y luego usa una sustitución de parámetro estándar para eliminar esa cadena.
No se realiza ninguna verificación para asegurarse de que no haya un directorio/archivo con el nombre de destino en el mismo directorio.
La secuencia de comandos sh -c
anterior obviamente también podría ejecutarse por sí misma,con modificaciones menores para hacer las pruebas que find
hizo para él:
for pathname in topdir/*' (Done)'/; do
mv "$pathname" "${pathname%' (Done)/'}"
done