LinuxParty

Ratio:  / 25
MaloBueno 

Si desea cambiar rápidamente el nombre de varios archivos en un directorio, deberá utilizar (puede hacerlo en un script) la sentencia for en ub bucle (a veces en combinación con otras utilidades como sed o tr )

Los ejemplos de este artículo incluyen la eliminación de los espacios de nombres de archivo, añadir y eliminar sufijos y prefijos, y cambiar de mayúsculas a minúsculas.

Aquí está una lista completa de los ejemplos que voy a tener en cuenta:

  • Eliminar los espacios de nombres de archivo
  • Alternativa para quitar los espacios de nombres de archivo
  • Añadir un sufijo
  • Añadir un prefijo
  • Eliminar un prefijo
  • Eliminar un sufijo
  • De mayúsculas a minúsculas
  • De mayúsculas a minúsculas (sólo sufijo)
  • Una situación poco probable

Quitar los espacios de nombres de archivo

Tengo algunos archivos mp3 imaginarios con espacios en los nombres de archivo. Los espacios en los nombres de archivo son una mala idea. Es un inconveniente, los espacios son delimitadores entre los argumentos de la línea de comandos y los archivos que usted está poniendo a cabo a través de Internet, pueden causar otros problemas, así que vamos a deshacernos de estos espacios como una cuestión de principios. (¿Quien tubo las estúpida idea de poner espacios en los nombres de archivo?)

$ ls -l

total 468
-rw-r--r-- 1 rob rob  15015 2006-10-20 11:18 01 - Some Song.mp3
-rw-r--r-- 1 rob rob  17313 2006-10-20 11:18 02 - Another Song.mp3
-rw-r--r-- 1 rob rob  17381 2006-10-20 11:19 03 - Yet Another Song.mp3
-rw-r--r-- 1 rob rob 410075 2006-10-20 11:19 04 - A New Song.mp3
-rw-r--r-- 1 rob rob   7327 2006-10-20 11:19 05 - Some Instrumental Piece.mp3

Voy a cambiar los espacios por subrayado. Como yo no quiero echar a perder las cosas, voy a ser cauteloso, para empezar:

$ for FILE in *.mp3 ; do NEWFILE=`echo $FILE | sed 's/ /_/g'` ; echo "$FILE will be renamed as $NEWFILE" ; done

01 - Some Song.mp3 will be renamed as 01_-_Some_Song.mp3
02 - Another Song.mp3 will be renamed as 02_-_Another_Song.mp3
03 - Yet Another Song.mp3 will be renamed as 03_-_Yet_Another_Song.mp3
04 - A New Song.mp3 will be renamed as 04_-_A_New_Song.mp3
05 - Some Instrumental Piece.mp3 will be renamed as 05_-_Some_Instrumental_Piece.mp3

Esto se ve bien, así que voy a intentarlo de verdad.

$ for FILE in *.mp3 ; do NEWFILE=`echo $FILE | sed 's/ /_/g'` ; mv "$FILE" $NEWFILE ; done
$ ls -l

total 468
-rw-r--r-- 1 rob rob  15015 2006-10-20 11:18 01_-_Some_Song.mp3
-rw-r--r-- 1 rob rob  17313 2006-10-20 11:18 02_-_Another_Song.mp3
-rw-r--r-- 1 rob rob  17381 2006-10-20 11:19 03_-_Yet_Another_Song.mp3
-rw-r--r-- 1 rob rob 410075 2006-10-20 11:19 04_-_A_New_Song.mp3
-rw-r--r-- 1 rob rob   7327 2006-10-20 11:19 05_-_Some_Instrumental_Piece.mp3

Me doy cuenta de que hay una forma alternativa, utilizando tr, que es más fácil (para escribir ). Sin embargo, yo diría que el principio la técnica anterior (usando sed ) se puede aplicar a más situaciones, por lo que es más útil como una plantilla.

Para aquellos que no están familiarizados con la línea de comandos, voy a descomponerlo en sus componentes constitutivos. Si está familiarizado con este tipo de cosas, no dude en pasar a los otros ejemplos .

Este no es el lugar para hablar for en gran detalle. Hay un montón de recursos en Internet para ese tipo de cosas. Cuando yo estaba empezando a aprender estas cosas, siempre me pareció un análisis detallado de estas cosas confusas, y que la mejor manera de aprender es hacerlo en realidad.

for FILE in *.mp3

En esta parte del bucle, FILE es la variable y *.mp3 es el argumento. El bucle for genera una variable para cada argumento hasta que no quedan argumentos. En el ejemplo anterior, las variables generadas son todos los archivos que coincidan con la expresión regular *.mp3 , en otras palabras:

01 - Algunos Song.mp3
02 - Otra Song.mp3
03 - Sin embargo, otro Song.mp3
04 - Un Nuevo Song.mp3
05 - Algunos Piece.mp3 Instrumental

; do

El punto y coma es un carácter especial que le permite terminar un comando y ejecutar otro comando en la misma línea. Todo for requiere un do .

NEWFILE=`echo $FILE | sed 's/ /_/g'`

Ahora estoy creando una nueva variable llamada NEWFILE . sed se utiliza para reemplazar cada espacio en el nombre del archivo mp3 referenciado en FILE con un guión (s/ /_/g), por lo que la variable NEWFILE es lo mismo que FILE , excepto el valor de cada variable de cada espacio ha sido sustituido por un guión bajo.

La siguiente parte es el comando que queremos ejecutar en cada argumento:

mv "$FILE" $NEWFILE

Renombra el contenido del valor de la variable $FILE a $NEWFILE, al estar dentro del lazo (do...done) se renombrará cada valor de la primera variable en el valor de la segunda variable hasta que se quede sin argumentos.

; done

Por último, todos los do requiere un done .

Estos son algunos otros ejemplos.

Alternativa para quitar los espacios de nombres de archivo

$ ls -l

total 468
-rw-r--r-- 1 rob rob  15015 2006-10-20 11:18 01 - Some Song.mp3
-rw-r--r-- 1 rob rob  17313 2006-10-20 11:18 02 - Another Song.mp3
-rw-r--r-- 1 rob rob  17381 2006-10-20 11:19 03 - Yet Another Song.mp3
-rw-r--r-- 1 rob rob 410075 2006-10-20 11:19 04 - A New Song.mp3
-rw-r--r-- 1 rob rob   7327 2006-10-20 11:19 05 - Some Instrumental Piece.mp3

Añadir un sufijo a varios archivos

$ ls -l

total 20
-rw-r--r-- 1 rob rob 733 2006-10-20 13:23 algebra
-rw-r--r-- 1 rob rob 194 2006-10-20 13:23 calculus
-rw-r--r-- 1 rob rob 117 2006-10-20 13:23 equations
-rw-r--r-- 1 rob rob 402 2006-10-20 13:23 geometry
-rw-r--r-- 1 rob rob  50 2006-10-20 13:23 matrices

En este ejemplo, me gustaría añadir un sufijo .txt a cada archivo en este directorio.

No necesitamos sed aquí:

$ for FILE in * ; do mv $FILE $FILE.txt ; done
$ ls -l

total 20
-rw-r--r-- 1 rob rob 733 2006-10-20 13:23 algebra.txt
-rw-r--r-- 1 rob rob 194 2006-10-20 13:23 calculus.txt
-rw-r--r-- 1 rob rob 117 2006-10-20 13:23 equations.txt
-rw-r--r-- 1 rob rob 402 2006-10-20 13:23 geometry.txt
-rw-r--r-- 1 rob rob  50 2006-10-20 13:23 matrices.txt

Añadir un prefijo

Tomando los archivos del ejemplo anterior:

$ ls -l

total 20
-rw-r--r-- 1 rob rob 733 2006-10-20 13:23 algebra.txt
-rw-r--r-- 1 rob rob 194 2006-10-20 13:23 calculus.txt
-rw-r--r-- 1 rob rob 117 2006-10-20 13:23 equations.txt
-rw-r--r-- 1 rob rob 402 2006-10-20 13:23 geometry.txt
-rw-r--r-- 1 rob rob  50 2006-10-20 13:23 matrices.txt

Me gustaría añadir un maths_prefijo a cada archivo:

$ for FILE in * ; do mv $FILE maths_$FILE ; done
$ ls -l

total 20
-rw-r--r-- 1 rob rob 733 2006-10-20 13:23 maths_algebra.txt
-rw-r--r-- 1 rob rob 194 2006-10-20 13:23 maths_calculus.txt
-rw-r--r-- 1 rob rob 117 2006-10-20 13:23 maths_equations.txt
-rw-r--r-- 1 rob rob 402 2006-10-20 13:23 maths_geometry.txt
-rw-r--r-- 1 rob rob  50 2006-10-20 13:23 maths_matrices.txt

Eliminar un prefijo

Siguiendo con los archivos que hemos estado utilizando:

$ ls -l

total 20
-rw-r--r-- 1 rob rob 733 2006-10-20 13:23 maths_algebra.txt
-rw-r--r-- 1 rob rob 194 2006-10-20 13:23 maths_calculus.txt
-rw-r--r-- 1 rob rob 117 2006-10-20 13:23 maths_equations.txt
-rw-r--r-- 1 rob rob 402 2006-10-20 13:23 maths_geometry.txt
-rw-r--r-- 1 rob rob  50 2006-10-20 13:23 maths_matrices.txt

He cambiado de opinión respecto al prefijo maths_ y quiero eliminarlo.

$ for FILE in * ; do NEWFILE=`echo $FILE | sed 's/^maths_//'` ; mv $FILE $NEWFILE ; done
$ ls -l

total de 20
-Rw-r - r - 1 rob rob 733 2006-10-20 13:23 algebra.txt
-Rw-r - r - 1 rob rob 194 2006-10-20 13:23 calculus.txt
-Rw-r - r - 1 rob rob 117 2006-10-20 13:23 equations.txt
-Rw-r - r - 1 rob rob 402 2006-10-20 13:23 geometry.txt
-Rw-r - r - 1 rob rob 50 2006-10-20 13:23 matrices.txt

El símbolo ^ en sed indica que debe coincidir con el comienzo de una línea.

eliminar un sufijo

Mientras estoy en ello, creo que voy a quitar el sufijo también.

$ for FILE in *.txt ; do NEWFILE=`echo $FILE | sed 's/.txt$//'` ; mv $FILE $NEWFILE ; done
$ ls -l

total 20
-rw-r--r-- 1 rob rob 733 2006-10-20 13:23 algebra
-rw-r--r-- 1 rob rob 194 2006-10-20 13:23 calculus
-rw-r--r-- 1 rob rob 117 2006-10-20 13:23 equations
-rw-r--r-- 1 rob rob 402 2006-10-20 13:23 geometry
-rw-r--r-- 1 rob rob  50 2006-10-20 13:23 matrices

El símbolo $ en sed indica si coincide con el final de una línea.

De mayúsculas a minúsculas

$ ls -l

total 20
-rw-r--r-- 1 rob rob 733 2006-10-20 13:23 ALGEBRA
-rw-r--r-- 1 rob rob 194 2006-10-20 13:23 CALCULUS
-rw-r--r-- 1 rob rob 117 2006-10-20 13:23 EQUATIONS
-rw-r--r-- 1 rob rob 402 2006-10-20 13:23 GEOMETRY
-rw-r--r-- 1 rob rob  50 2006-10-20 13:23 MATRICES

$ for FILE in * ; do mv $FILE `echo $FILE | tr '[A-Z]' '[a-z]'` ; done
$ ls -l

total 20
-rw-r--r-- 1 rob rob 733 2006-10-20 13:23 algebra
-rw-r--r-- 1 rob rob 194 2006-10-20 13:23 calculus
-rw-r--r-- 1 rob rob 117 2006-10-20 13:23 equations
-rw-r--r-- 1 rob rob 402 2006-10-20 13:23 geometry
-rw-r--r-- 1 rob rob  50 2006-10-20 13:23 matrices

De mayúsculas a minúsculas (sólo sufijo)

$ ls -l

total 20
-rw-r--r-- 1 rob rob 733 2006-10-20 13:23 Algebra.TXT
-rw-r--r-- 1 rob rob 194 2006-10-20 13:23 Calculus.TXT
-rw-r--r-- 1 rob rob 117 2006-10-20 13:23 Equations.TXT
-rw-r--r-- 1 rob rob 402 2006-10-20 13:23 Geometry.TXT
-rw-r--r-- 1 rob rob  50 2006-10-20 13:23 Matrices.TXT

$ for FILE in *.TXT ; do NEWFILE=`echo $FILE | sed 's/.TXT$/.txt/'` ; mv $FILE $NEWFILE ; done
$ ls -l

total 20
-rw-r--r-- 1 rob rob 733 2006-10-20 13:23 Algebra.txt
-rw-r--r-- 1 rob rob 194 2006-10-20 13:23 Calculus.txt
-rw-r--r-- 1 rob rob 117 2006-10-20 13:23 Equations.txt
-rw-r--r-- 1 rob rob 402 2006-10-20 13:23 Geometry.txt
-rw-r--r-- 1 rob rob  50 2006-10-20 13:23 Matrices.txt

una situación poco probable

Por último, una situación poco probable. Tengo un montón de archivos con múltiples espacios y sufijos capitalizados. Quiero que los espacios cambien a un guión, salvo cuando haya dos o más espacios consecutivos, en el que necesito un solo subrayado. Mientras estamos en ello, si un espacio está al lado del punto de un prefijo, vamos a quitarlo. También quiero hacer los sufijos minúsculas. Hmm.

$ ls -l

total 20
-rw-r--r-- 1 rob rob  201 2006-10-23 23:44 A file  with many   spaces.TXT
-rw-r--r-- 1 rob rob 1579 2006-10-23 23:44 Another wierdly named  file.TXT
-rw-r--r-- 1 rob rob 1452 2006-10-23 23:44 My mate Arron spels  beter than this.txt
-rw-r--r-- 1 rob rob  924 2006-10-23 23:44 Not really.TXT
-rw-r--r-- 1 rob rob  379 2006-10-23 23:44 Whoo named this .TXT

I'm not going to try to correct the spelling as well!

$ for FILE in * ; do NEWFILE=`echo $FILE | sed -e 's/.TXT$/.txt/' -e 's/[ ]*[ ]/_/g' -e 's/_[.]/./g'` ; mv "$FILE" $NEWFILE ; done
$ ls -l

total 20
-rw-r--r-- 1 rob rob  201 2006-10-23 23:44 A_file_with_many_spaces.txt
-rw-r--r-- 1 rob rob 1579 2006-10-23 23:44 Another_wierdly_named_file.txt
-rw-r--r-- 1 rob rob 1452 2006-10-23 23:44 My_mate_Arron_spels_beter_than_this.txt
-rw-r--r-- 1 rob rob  924 2006-10-23 23:44 Not_really.txt
-rw-r--r-- 1 rob rob  379 2006-10-23 23:44 Whoo_named_this.txt

Eso fue un poco artificial, pero sí ofrece un ejemplo de la potencia de la línea de comandos.

Tenga en cuenta que algunas personas pagan por este tipo de funcionalidad. Eso sí, tenga en cuenta su opción .


apéndice

Dar a todos los archivos el mismo nombre, pero con un número diferente parece, bueno, tonto, pero vamos a hacerlo de todos modos. Los paréntesis son también una mala idea para los nombres de archivo, pero esto es sólo un ejercicio.

$ ls -l

total 20
-rw-r--r-- 1 rob rob 733 2006-10-20 13:23 algebra
-rw-r--r-- 1 rob rob 194 2006-10-20 13:23 calculus
-rw-r--r-- 1 rob rob 117 2006-10-20 13:23 equations
-rw-r--r-- 1 rob rob 402 2006-10-20 13:23 geometry
-rw-r--r-- 1 rob rob  50 2006-10-20 13:23 matrices

$ NUM=0 ; for FILE in * ; do NUM=`expr $NUM + 1` ; mv $FILE foolish\($NUM\) ; done
$ ls -l

total 20
-rw-r--r-- 1 rob rob 733 2006-10-20 13:23 foolish(1)
-rw-r--r-- 1 rob rob 194 2006-10-20 13:23 foolish(2)
-rw-r--r-- 1 rob rob 117 2006-10-20 13:23 foolish(3)
-rw-r--r-- 1 rob rob 402 2006-10-20 13:23 foolish(4)
-rw-r--r-- 1 rob rob  50 2006-10-20 13:23 foolish(5)

¿Qué sería más útil mantener el nombre original y separar el número secuencial con un subrayado

$ ls -l

total 20
-rw-r--r-- 1 rob rob 733 2006-10-20 13:23 algebra
-rw-r--r-- 1 rob rob 194 2006-10-20 13:23 calculus
-rw-r--r-- 1 rob rob 117 2006-10-20 13:23 equations
-rw-r--r-- 1 rob rob 402 2006-10-20 13:23 geometry
-rw-r--r-- 1 rob rob  50 2006-10-20 13:23 matrices

$ NUM=0 ; for FILE in * ; do NUM=`expr $NUM + 1` ; mv $FILE ${FILE}_$NUM ; done
$ ls -l

total 20
-rw-r--r-- 1 rob rob 733 2006-10-20 13:23 algebra_1
-rw-r--r-- 1 rob rob 194 2006-10-20 13:23 calculus_2
-rw-r--r-- 1 rob rob 117 2006-10-20 13:23 equations_3
-rw-r--r-- 1 rob rob 402 2006-10-20 13:23 geometry_4
-rw-r--r-- 1 rob rob  50 2006-10-20 13:23 matrices_5

No deje de leer nuestro estupendo tutorial sobre expresiones regulares.

Expresiones Regulares en Linux


Comentarios   

0 # alex 26-02-2014 17:32
Buenas,
Muy buen aporte me estas salvando la vida ;)

Una consulta:
¿como seria el siguiente caso?

Tengo estos files:

-rw-r--r-- 1 rob rob 733 2006-10-20 13:23 algebra.mp4
-rw-r--r-- 1 rob rob 194 2006-10-20 13:23 calculus.mp4
-rw-r--r-- 1 rob rob 117 2006-10-20 13:23 equations.mp4
-rw-r--r-- 1 rob rob 402 2006-10-20 13:23 geometry.mp4
-rw-r--r-- 1 rob rob 50 2006-10-20 13:23 matrices.mp4

Y desearia pasar a esto:

-rw-r--r-- 1 rob rob 733 2006-10-20 13:23 algebra_VOSE_20.mp4
-rw-r--r-- 1 rob rob 194 2006-10-20 13:23 calculus_VOSE_20.mp4
-rw-r--r-- 1 rob rob 117 2006-10-20 13:23 equations_VOSE_20.mp4
-rw-r--r-- 1 rob rob 402 2006-10-20 13:23 geometry_VOSE_20.mp4
-rw-r--r-- 1 rob rob 50 2006-10-20 13:23 matrices_VOSE_20.mp4

He intentado borrando el sufijo .mp4 y luego añadir sufijo "_VOSE_20.mp4" pero no funciona :(

Mucas gracias
Responder | Responder con una citación | Citar
+4 # Expresiones 27-02-2014 12:51
Basta que con escribas...

for FILE in *.mp4 ; do NEWFILE=`echo $FILE | sed -e 's/.MP4$/.mp4/' -e 's/[.]/_VOSE_20 ./g'` ; mv "$FILE" $NEWFILE ; done
Responder | Responder con una citación | Citar
0 # alex 04-03-2014 18:53
:-) :lol:
Responder | Responder con una citación | Citar
0 # alex 05-03-2014 09:59
La operación me devuelve esto:

mv: target `.mp4' is not a directory
mv: target `.mp4' is not a directory

:-? :sad: :oops:
Responder | Responder con una citación | Citar
+1 # Carlos 06-03-2014 07:39
Alex, no hay ninguna satisfacción mayor que la del propio trabajo bien hecho.

Te invito a que te veas el artículo de Expresiones Regulares en Linux

******www.linux-party.com/index.php/35-linux/5232-expresiones-regulares-en-linux-que-son-y-como-entenderlas

Y hagas tu el trabajo.

:-)
Responder | Responder con una citación | Citar
-1 # Victor 06-03-2014 16:37
Alex:

"target", significa "objetivo", lo que te está indicando es que estás haciendo eso en un directorio "vacío", es decir que no contiene ficheros ".mp4"

Si escribes:

echo "" > uno.mp4
echo "" > dos.mp4
echo "" > tres.mp4

y luego corres la expresión que "Expresiones" escribió para ti, verás que funciona perfectamente...

Deberías asegurarte antes de comentar...
Responder | Responder con una citación | Citar
+3 # Runner 06-03-2014 16:49
Cogiendo el ejemplo anterior...

Si hubieras cambiado el "mv" por "echo" en la expresión...

for FILE in *.mp4 ; do NEWFILE=`echo $FILE | sed -e 's/.MP4$/.mp4/' -e 's/[.]/_VOSE_20 ./g'` ; echo "$FILE" $NEWFILE ; done

Que haciendo correr muestra:

---------------------------------
dos.mp4 dos_VOSE_20 .mp4
tres.mp4 tres_VOSE_20 .mp4
uno.mp4 uno_VOSE_20 .mp4
---------------------------------

Te habrías dado cuenta que el error está en el espacio dentro de "VOSE_20 ./g", si lo suprimes (el espacio), funciona perfectamente:

dos.mp4 dos_VOSE_20.mp4
tres.mp4 tres_VOSE_20.mp4
uno.mp4 uno_VOSE_20.mp4

Quedando la expresión...

==================================

for FILE in * ; do NEWFILE=`echo $FILE | sed -e 's/.MP4$/.mp4/' -e 's/[.]/_VOSE_20 ./g'` ; mv "$FILE" $NEWFILE ; done

==================================
Responder | Responder con una citación | Citar
+2 # alex 11-03-2014 13:32
:-*
Muchas gracias a todos.
Siento las molestias :cry: no era mi intención robarles su tiempo.
Ahora ya me funciona e incluso me he creado algunas nuevas.

Que bonito es aprender, ¡Y conoce el poder!
Responder | Responder con una citación | Citar
0 # benjamin galicia 01-10-2014 03:38
super la informacion y la explicacion. muy util y muchas gracias. a favoritos. saludos
Responder | Responder con una citación | Citar
0 # Carlos Andres 27-11-2014 17:01
Buen día,

Muchas gracias por la guía, una consulta, como sería para quitar espacios en directorios???

Gracias
Responder | Responder con una citación | Citar
0 # Javier Orovengua 27-11-2014 21:27
Cito a Carlos Andres:
Buen día,

Muchas gracias por la guía, una consulta, como sería para quitar espacios en directorios???

Gracias


Tienes que buscar a partir de la combinación "ls -d */" Te mostrará sólo los directorios, pues debes utilizar "ls -df1 */"

Y a partir de ahí, usas la opción, es más, debes usar:

for FILE in */ ; do NEWFILE=`echo $FILE | sed 's/ /_/g'` ; echo "$FILE will be renamed as $NEWFILE" ; done

Coloca dentro "mv $FILE $NEWFILE", lee el artículo y practica...
Responder | Responder con una citación | Citar
0 # Fernando 01-12-2014 20:17
:D Buenísimo, bien explicado y de mucha ayuda, mil gracias
Responder | Responder con una citación | Citar
0 # Daniel 16-01-2015 21:05
Excelente explicación, gracias por la aportación.
Responder | Responder con una citación | Citar
0 # jujenio 15-04-2015 15:42
Muy buena info!..pero no soy capaz d agregar como prefijo a una lista d archivos .mp4 numerandolos de 1 a x... intente el ultimo comando: $ NUM=0 ; for FILE in * ; do NUM=`expr $NUM + 1` ; mv $FILE ${FILE}_$NUM ; done .. asi tal cual esta y me muesta el error.. "is not a directory".. gracias!!
Responder | Responder con una citación | Citar
0 # indalecio 02-06-2017 13:39
Debes hacerlo desde la consola (shell) de Linux, y si cambias "mv" por "echo", para probar si funciona, SI, funciona.

NUM=0 ; for FILE in * ; do NUM=`expr $NUM + 1` ; echo $FILE ${FILE}_$NUM ; done
Responder | Responder con una citación | Citar
0 # dani8681 01-06-2017 22:18
Buenas Tardes. Muy buen aporte...
Escribo para ver si me pueden ayudar
tengo estos archivos:
archivo1.doc.v1234567890
archivo2.doc.v2345678901
archivo3.doc.v3456789012
archivo4.doc.v4567890123

Necesito eliminar todos los sufijos después del .doc osea todo lo que esta (.v1234567890) puntos letra y numero y tienden a ser diferentes a variar no son iguales ni es un consecutivo.
Si me pueden ayudar se los agradecería muchísimo...
Responder | Responder con una citación | Citar
0 # indalecio 02-06-2017 13:50
Prueba que VA A FUNCIONAR así:

for FILE in archivo*.doc* ; do VAR1=`echo $FILE | sed s/'\.'/' '/g | awk {'print $1"."$2'}` ; echo $FILE, $VAR1 ; done

Después, es cambiar "ECHO" por "MV" y quedará así:

for FILE in archivo*.doc* ; do VAR1=`echo $FILE | sed s/'\.'/' '/g | awk {'print $1"."$2'}` ; mv $FILE $VAR1 ; done

Hay otras formas de hacerlo, pero yo lo hice así.
Responder | Responder con una citación | Citar

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Encuesta de LinuxParty

¿Dónde apreciarías más tener un robot?

En la cocina, para hacer la comida - 11.3%
En casa, barriendo y fregando. - 34.7%
Que conduzca para ir al trabajo/viaje mi coche - 8%
Que saque al perro / mascota - 2%
Que practique Sexo conmigo - 27.3%
Yo no quiero un robot para nada. - 16.7%

Total votes: 150
The voting for this poll has ended on: 30 Jun 2017 - 00:00

Donar a LinuxParty

La mejor forma de darnos las gracias, es hacer una donación.


Tutorial de Linux