• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

113
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.

about 3 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
about 3 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
about 3 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda