Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

160
Vistas
Encuentre y mueva archivos a los directorios apropiados usando el script de shell

Tengo la siguiente configuración y quiero buscar y mover archivos.

Tengo los archivos /home/backup/abc/123.wav y /home/backup/xyz/456.wav . Existen los mismos directorios en /usr/src/abc y /usr/src/xyz que no tiene ningún archivo.

Quiero encontrar archivos .wav desde home_dir y moverlos a dest_dir en particular.

Entonces 123.wav debería moverse a /usr/src/abc y 456.wav debería moverse a /usr/src/xyz. Estoy usando el siguiente comando para eso.

 home_dir=/home/backup/ dest_dir=/usr/src/ cd $home_dir && find . -iname "*.wav" -exec mv {} $dest_dir \;

Pero todos los archivos .wav (123.wav y 456.wav) se trasladaron a /usr/src y no a sus respectivos directorios (/usr/src/abc y /usr/src/xyz).

¿Es posible lograr lo que quiero? Por favor recomiende.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Use la opción cp --parents con find para crear directorios principales de cada archivo que se copia:

 home_dir=/home/backup/ dest_dir=/usr/src/ cd "$home_dir" find . -iname "*.wav" -exec cp --parents {} "$dest_dir" \; -delete
over 4 years ago · Santiago Trujillo Denunciar

0

Esto sería mucho más fácil si mv tuviera la opción --parents , pero desafortunadamente no la tiene. Es mejor usar mv en lugar de cp porque cp copiará todos los datos innecesariamente si los directorios de origen y destino están en el mismo sistema de archivos. si tiene Bash 4 (que es compatible con globstar ), podría hacerlo así:

 home_dir=/home/backup/ dest_dir=/usr/src/ shopt -s globstar nullglob dotglob for src_wav in "$home_dir"/**/*.wav ; do rel_wav=${src_wav#$home_dir/} dst_wav=$dest_dir/$rel_wav dst_parent=${dst_wav%/*} [[ -d $dst_parent ]] || mkdir -p -- "$dst_parent" mv -- "$src_wav" "$dst_wav" done
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda