| Autor |
Mensaje |
ranton1959

Forista Nuevo
Registrado: Jue Nov 18, 2010 12:57 pm Mensajes: 6
|
 Publicado: Jue Nov 18, 2010 1:42 pm |
|
|
Hola soy nuevo en las programación de script en linux y algo que creia que seria facil de hacer se me esta atascando: Necesito modificar el nombre los archivos xxxxxxxxx.aaabbb que se encuentran en alguno de los subdirectorios del directorio /home/ranton1959/ y para ello empece con esta sentencia: for fichero in $(find /home/ranton1959/ -name *.aaabbb) do
y aqui quiero que cada archivo devuelto se convierta en xxxxxxxx.aaa
Alguien sabe como hacerlo?
muchas gracias anticipadas
|
|
|
|
 |
hipersayan_x

Forista Distinguido
Registrado: Jue Abr 26, 2007 11:00 pm Mensajes: 1426
|
 Publicado: Jue Nov 18, 2010 3:08 pm |
|
ranton1959 escribió: Hola soy nuevo en las programación de script en linux y algo que creia que seria facil de hacer se me esta atascando: Necesito modificar el nombre los archivos xxxxxxxxx.aaabbb que se encuentran en alguno de los subdirectorios del directorio /home/ranton1959/ y para ello empece con esta sentencia: for fichero in $(find /home/ranton1959/ -name *.aaabbb) do
y aqui quiero que cada archivo devuelto se convierta en xxxxxxxx.aaa
Alguien sabe como hacerlo?
muchas gracias anticipadas Proba así: Código: find ~ -type f -iname *.aaabbb -exec mv -fv {} `echo {}|sed s/bbb//g` \; 2>/dev/null
_________________ "Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit."
"Finibus Bonorum Et Malorum", Cicerón
|
|
|
|
 |
ranton1959

Forista Nuevo
Registrado: Jue Nov 18, 2010 12:57 pm Mensajes: 6
|
 Publicado: Vie Nov 19, 2010 8:08 am |
|
|
Hola he probado y me da un error de permiso denegado, tendré que revisarlo
gracias de todas formas
|
|
|
|
 |
mcun

Moderador
Registrado: Dom Abr 18, 2010 4:30 pm Mensajes: 2790 Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)
|
 Publicado: Vie Nov 19, 2010 9:35 am |
|
|
|
 |
ranton1959

Forista Nuevo
Registrado: Jue Nov 18, 2010 12:57 pm Mensajes: 6
|
 Publicado: Mié Nov 24, 2010 10:32 am |
|
|
bueno, perdon por los retrasos en contestar, he estado con otros temas. Eso al final lo consegui de la siguiente manera: for fichero in $(find /publishers/ -name *.xlsNOCHE); do mv -fv $fichero $(echo $fichero |sed s/NOCHE//g); posiblemente se podria haber hecho en una sentencia pero no supe hacerlo.
pero ahora me he encontrado con otro problema, ¿que pasa cuando tengo archivos con el nombre con espacios en blanco Este es el ejemplo, para este directorio ls /publishers/ciudades/ Cuadernos de Roma.xlsNOCHE Historias de Madrid.xlsNOCHE
y cuando ejecuto el script me devuelve este resultado: /publishers/ciudades/Cuadernos sed: -e expression #1, char 0: no previous regular expression sed: -e expression #1, char 2: unterminated `s' command mv: missing destination file operand after `$fichero' Try `mv --help' for more information. de sed: -e expression #1, char 0: no previous regular expression sed: -e expression #1, char 2: unterminated `s' command mv: missing destination file operand after `$fichero' Try `mv --help' for more information. Roma.xlsNOCHE sed: -e expression #1, char 0: no previous regular expression sed: -e expression #1, char 2: unterminated `s' command mv: missing destination file operand after `$fichero' Try `mv --help' for more information.
Como podeis ver el problema son los espacios entre palabras que hace que se separe la instrución ¿Alguien puede ayudareme? gracias anticipadas
|
|
|
|
 |
hipersayan_x

Forista Distinguido
Registrado: Jue Abr 26, 2007 11:00 pm Mensajes: 1426
|
 Publicado: Mié Nov 24, 2010 12:05 pm |
|
Así: Código: for fichero in $(find /publishers/ -name *.xlsNOCHE); do mv -fv "$fichero" $(echo "$fichero" |sed s/NOCHE//g);
Y se simplificaría así: Código: find /publishers -type f -name *.xlsNOCHE -exec mv -fv {} `echo {}|sed s/NOCHE//g` \; 2>/dev/null O sino, le sacas el 2>/dev/null para ver los errores.
_________________ "Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit."
"Finibus Bonorum Et Malorum", Cicerón
|
|
|
|
 |
ranton1959

Forista Nuevo
Registrado: Jue Nov 18, 2010 12:57 pm Mensajes: 6
|
 Publicado: Mié Nov 24, 2010 1:47 pm |
|
|
Pero esto me da problemas cuando el nombre de arcivo tiene espacios.
¿Como puedo solucionarlo?
|
|
|
|
 |
hipersayan_x

Forista Distinguido
Registrado: Jue Abr 26, 2007 11:00 pm Mensajes: 1426
|
 Publicado: Mié Nov 24, 2010 3:23 pm |
|
Ponele comillas: Citar: for fichero in $(find /publishers/ -name *.xlsNOCHE); do mv -fv "$fichero" $(echo "$fichero" |sed s/NOCHE//g);
_________________ "Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit."
"Finibus Bonorum Et Malorum", Cicerón
|
|
|
|
 |
ranton1959

Forista Nuevo
Registrado: Jue Nov 18, 2010 12:57 pm Mensajes: 6
|
 Publicado: Jue Nov 25, 2010 1:36 am |
|
|
No funciona, sigue considerando que la segunda palabra es el desdtino del vomando mv. ¿sabria alguien de un comando que eliminase esos espacios, puedo renombrar el fichero, y cambiarlos por ejemplo por _?
Gracias por las ayudas
|
|
|
|
 |
hipersayan_x

Forista Distinguido
Registrado: Jue Abr 26, 2007 11:00 pm Mensajes: 1426
|
 Publicado: Jue Nov 25, 2010 6:59 am |
|
_________________ "Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit."
"Finibus Bonorum Et Malorum", Cicerón
|
|
|
|
 |
ranton1959

Forista Nuevo
Registrado: Jue Nov 18, 2010 12:57 pm Mensajes: 6
|
 Publicado: Jue Nov 25, 2010 7:37 am |
|
|
Gracias hipersayan creo que con lo que comentan del IFS solucionare el tema.
un placer haberte conocido, me has sido de gran ayuda
|
|
|
|
 |
|
|
|