Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

166
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!