Cambie el nombre de los directorios de archivos de forma recursiva usando bash en Windows

CorePress2024-01-25  11

├── package-1
│   └── src
│       ├── controllers
│       ├── models
│       |── traits
│       └── views
├── package-2
│   └── src
│       ├── controllers
│       ├── models
│       |── traits
│       └── views
├── package-3
│   └── src
│       ├── controllers
│       ├── models
│       |── traits
│       └── views

Me gustaría cambiar recursivamente el nombre de las carpetas controladores a Controladores, modelos y Modelos

De varios artículos, por ejemplo, https://askubuntu.com/questions/56326/how-do-i-rename-a-directory-via-the-command-line y publicaciones, puedo ver que necesito usar rm. Entonces Ejecuté el siguiente comando

for i in */src/controllers/; 
  do  mv $i /Controllers/; 
done

A continuación se muestra el error al que me enfrento

mv: cannot move 'laravel-files/src/controllers/' to '/Controllers/controllers': Directory not empty
mv: cannot move 'laravel-guardian-admissions/src/controllers/' to '/Controllers/controllers': Directory not empty
mv: cannot move 'laravel-guardians/src/controllers/' to '/Controllers/controllers': Directory not empty
mv: cannot move 'laravel-lms/src/controllers/' to '/Controllers/controllers': Directory not empty
mv: cannot move 'laravel-permissions-and-roles/src/controllers/' to '/Controllers/controllers': Directory not empty
mv: cannot move 'laravel-procurements/src/controllers/' to '/Controllers/controllers': Directory not empty
mv: cannot move 'laravel-school-accounts/src/controllers/' to '/Controllers/controllers': Directory not empty
mv: cannot move 'laravel-school-curriculum/src/controllers/' to '/Controllers/controllers': Directory not empty
mv: cannot move 'laravel-school-exams/src/controllers/' to '/Controllers/controllers': Directory not empty
mv: cannot move 'laravel-school-infrastructures/src/controllers/' to '/Controllers/controllers': Directory not empty
mv: cannot move 'laravel-school-streams/src/controllers/' to '/Controllers/controllers': Directory not empty

Por favor, ayúdenme a señalar dónde me estoy equivocando en la implementación

@anubhava mismo error

-Owen Kelvin

28 de marzo de 2021 a las 10:46



------------------------------------

Debido al / inicial en mv $i /Controllers/, mueves cada $i al mismo directorio, es decir, un directorio llamado Controllers en la parte superior de tu sistema de archivos.

Puede ingresar cd a cada directorio y usar una ruta relativa (cd "$i/.."; mv "$i" Controllers; cd -) o modificar las rutas usando la expansión de parámetros de bash:

for i in */src/controllers/; do
  mv "$i" "${i/\/c/\/C}"
done

${i/\/c/\/C} reemplaza el primer /c por /C.

3

Esto parece estar eliminando los directorios eliminados: año académico/src/controladores/AcademicYearApiController.php eliminado: año académico/src/controladores/AcademicYearController.php eliminado: año académico/src/controladores/AcademicYearUnitLevelController.php eliminado: género/src/controladores/GenderApiController.php eliminado: género/src/controladores/GenderController. php eliminado: laravel-data-sync/src/Controladores/DataSyncController.php `

-Owen Kelvin

28/03/2021 a las 11:02

Probé el comando exactamente en su estructura de archivos de ejemplo, consulte onlinegdb.com/peej3HG7c. ¿Está seguro de que los directorios fueron eliminados? No creo que mv pueda siquiera imprimir el mensaje eliminado: ... (al menos mi versión no contiene esa cadena). ¿Podría ser que tengas un directorio que literalmente se llama eliminado: año académico?

- Socowi

28/03/2021 a las 11:10

Gracias, creo que mis comandos anteriores habían eliminado los archivos, hice un reinicio de git y usé tu comando. Funcionó de maravilla, muchas gracias

-Owen Kelvin

28/03/2021 a las 11:47



------------------------------------

Si tienes GNU paralelo instalado, puedes probar:

find . -regextype posix-extended -regex '.*/(controlers|models|traits|views)' | 
    parallel echo mv {} {= 's[(.*/)(.+)][ . ucfirst()]e' =}

elimine el eco si se espera el resultado.

1

Gracias por tu solución, nunca usé GNU paraMuy bien, pero me aseguraré de echarle un vistazo.

-Owen Kelvin

28/03/2021 a las 12:04

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare