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

322
Views
Cómo ejecutar el comando mv ejecutar recursivamente en Linux

Mi entorno: Bash 3.5 LinuxRedhat

Estoy usando el siguiente código para cambiar el nombre de todos mis archivos en un solo directorio.

 for file in *.* ; do mv "$file" "Add_$file" ; done

Ahora, quiero cambiar el nombre de mi archivo de forma recursiva. Y no sé cómo hacerlo.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Las primeras ideas con find no funcionan, porque {} devuelve ./ con el comando:

 find . -type f -name "*.*" -execdir mv {} Add_{} ";"

Necesitamos algo, que elimine el ./ al frente pero también funcione en los subdirectorios.

 echo 'f=$(basename "$1"); mv "$f" Add_"$f";' > adhoc.sh chmod a+x adhoc.sh find . -type f -name "*.*" -execdir $PWD/adhoc.sh "{}" ";"

Al menos esto funciona para gnu-find . Es posible que otros hallazgos no tengan el comando -execdir .

Gracias por skyking por señalar mi error.

Para Linux, puede encontrar una versión de 'cambiar nombre' en el repositorio, pero normalmente debe instalarse y no es parte de la instalación estándar. Si a menudo cambia el nombre con la línea de comandos, vale la pena el esfuerzo. Con rename , especifica un comando de sustitución de expresiones regulares y puede probarlo primero:

 find . -type f -exec rename -n "s/(.*)/Add_\1/" {} ";"
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!