Si necesita cambiar el nombre de los archivos en subdirectorios también, y su find
admite el -execdir
predicado, entonces puede hacerlo
find /search/path -depth -name '* *' \
-execdir bash -c 'mv -- "$1" "${1// /_}"' bash {} \;
Gracias a @glenn jackman por sugerirme una -depth
opción find
y hacerme pensar.
Tenga en cuenta que en algunos sistemas (incluidos los GNU / Linux), es find
posible que no pueda encontrar archivos cuyo nombre contenga espacios y también secuencias de bytes que no formen caracteres válidos (típico con archivos multimedia con nombres con caracteres no ASCII codificados en un juego de caracteres) diferente de la configuración regional). Establecer la configuración regional en C
(como en LC_ALL=C find...
) resolvería el problema.
find -maxdepth 1
para hacer exactamente lo que el OP le pidió sobre la operación en la carpeta actual.-depth
opción de búsqueda , y puede deshacerse de élsort
.-name '* *'
a-name '*_*'
y el cambio"${1// /_}"
a"${1//_/.}"
bash
la página de manual de.En cualquier shell, puede recorrer los archivos cuyo nombre contiene un espacio. Reemplazar los espacios con guiones bajos es fácil en bash, ksh y zsh con la
${VARIABLE//PATTERN/REPLACEMENT}
construcción.En Debian, Ubuntu y derivados, puede usar Perl
rename
(otras distribuciones envían un programa diferente comorename
, y ese programa no es útil aquí).Una solución zsh obligatoria:
Una solución POSIX obligatoria:
fuente
s/…/…/g
significa reemplazar todas las ocurrencias. No está muy bien explicado en el manual . Si desea cambiar el nombre de los directorios, hay formas, búsquelo (creo que lo he visto antes) y si no puede encontrarlo, haga una nueva pregunta._MG_blah.JPG
aIMG_blah.JPG
.Puede usar
rename
para esto (aquí asumiendo el deutil-linux
, no el deperl
):Esto encontrará todos los espacios de archivos y directorios en el nombre y reemplazará el espacio con un guión bajo. Dado que utiliza la coincidencia de archivos glob, debe estar en el directorio correcto para comenzar.
Si desea hacer coincidencias recursivas, puede hacerlo, pero es posible que tenga que ejecutarlas
rename
un par de veces para capturar cualquier elemento en los directorios que hayan cambiado de nombre:fuente
rename
Cambiará el nombre de los archivos especificados reemplazando la primera aparición de from en su nombre por to ". Por lo tanto, esto solo funcionará para archivos con un solo espacio en su nombre. (Podría llamarrename
en un bucle, pero no es realmente la herramienta correcta aquí.)Otra opción sería
mmv
, si está instalada.fuente
_
, no funciona nombres con múltiples espacios.En Debian / Ubuntu, basándose en las respuestas de Caleb y Gilles, esto es lo que me funcionó para cambiar el nombre de los archivos de forma recursiva:
Nota: para obtener una vista previa de los archivos que se renombrarán y cómo, use el
-n
interruptor conrename
:Otra nota: el establecimiento de
globstar
marcas**
coinciden con los archivos de todos los subdirectorios, así que si sólo se desea directorio actual, no lo hacen conjunto Globstar o utilizar*
en lugar de**
.Una nota más: el
rename
comando debe ejecutarse más de una vez para archivos con múltiples ocurrencias del término de búsqueda.fuente
a b/c d
aa_b/c_d
no funcionaría, primero deberías cambiar el nombrea b/c d
aa b/c_d
, y luegoa b
aa_b
).rename
comando dos veces?**
excluye los archivos de puntos y atraviesa los enlaces simbólicos.Si no eres un flash en las expresiones regulares (¡no lo soy!), Y puedes ejecutar aplicaciones diseñadas para kde (ya sea que utilices kde - k desktop o tienes sus bibliotecas instaladas), entonces krename es una gran utilidad gráfica que le permite ver el antes y el después antes de comprometerse con los cambios. Tiene una serie de transformaciones simples como opciones y también admite expresiones regulares. Incluso puede combinar varias transformaciones secuenciales en un solo cambio de nombre para que no tenga que diseñar una sola transformación compleja que lo haga todo a la vez. También tiene una opción para continuar cambiando el nombre de los mismos archivos después de aplicar un cambio de nombre.
No lo uso con tanta frecuencia, pero cuando lo hago, realmente hace el trabajo de manera rápida y fácil. Realmente es útil al cambiar el nombre de varios archivos multimedia descargados para que pueda administrarlos de manera uniforme en su sistema. Ayuda a descargar el manual de krename por separado para que pueda consultarlo mientras usa el programa.
http://www.krename.net/
fuente