Foros del Web » Administración de Sistemas » Unix / Linux »

Mover todos los archivos "*.txt" de subdirecorios a un nuevo directorio

Estas en el tema de Mover todos los archivos "*.txt" de subdirecorios a un nuevo directorio en el foro de Unix / Linux en Foros del Web. /origen --document.txt --document.avi --document.rar --/directorio ----document.txt ----document.csv ----document.odt ----document.pdf ----/directorio ------document.txt ------document.csv ------document.php ------document.css /destino (No existe aun) --document.txt --/directorio (No existe aun) ----document.txt ----/directorio ...
  #1 (permalink)  
Antiguo 23/11/2015, 20:22
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 3 meses
Puntos: 9
Mover todos los archivos "*.txt" de subdirecorios a un nuevo directorio

/origen
--document.txt
--document.avi
--document.rar
--/directorio
----document.txt
----document.csv
----document.odt
----document.pdf
----/directorio
------document.txt
------document.csv
------document.php
------document.css



/destino (No existe aun)
--document.txt
--/directorio (No existe aun)
----document.txt
----/directorio (No existe aun)
------document.txt
  #2 (permalink)  
Antiguo 24/11/2015, 02:26
Avatar de lauser
Moderator Unix/Linux
 
Fecha de Ingreso: julio-2013
Ubicación: Odessa (Ukrania)
Mensajes: 3.278
Antigüedad: 10 años, 9 meses
Puntos: 401
Respuesta: Mover todos los archivos "*.txt" de subdirecorios a un nuevo directorio

Con el comando mv.
Ejemplo simple:
Código BASH:
Ver original
  1. mv -r *.txt /destino
__________________
Los usuarios que te responden, lo hacen altruistamente y sin ánimo de lucro con el único fin de ayudarte. Se paciente y agradecido.
-SOLOLINUX-
  #3 (permalink)  
Antiguo 24/11/2015, 08:16
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Mover todos los archivos "*.txt" de subdirecorios a un nuevo directorio

En realidad eso no encontraría los .txt que estén en subdirectorios.

Si la idea es moverlos todos al mismo lugar, lo siguiente es equivalente:

Código BASH:
Ver original
  1. # para bash 4.x
  2. shopt -s globstar
  3. mv **/*.txt destino/
  4.  
  5. # para cualquier sistema donde "find" esté disponible
  6. find . -name "*.txt" -exec mv {} destino/ \;


Si la idea es preservar la estructura de directorios, probablemente haya algo mejor pero mi "fórmula" es usar algo como lo siguiente:

Código BASH:
Ver original
  1. find . -name "*.txt" -exec -exec bash -c '
  2.        for FILE in "$0" "$@"; do
  3.                mkdir -p destino/"$(dirname "$FILE")"
  4.                mv -v -- "$FILE" "destino/$FILE"
  5.        done
  6.        ' {} +
  #4 (permalink)  
Antiguo 24/11/2015, 10:29
 
Fecha de Ingreso: octubre-2011
Mensajes: 166
Antigüedad: 12 años, 6 meses
Puntos: 31
Respuesta: Mover todos los archivos "*.txt" de subdirecorios a un nuevo directorio

Puede darse el caso que archivos tengan el mismo nombre, en ese caso solo uno de ellos sobrevivirá

Etiquetas: directorio
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:01.