mover archivos y carpetas a una subcarpeta

mover archivos y carpetas a una subcarpeta

Me gustaría mover todos los archivos y carpetas de un directorio a una de sus subcarpetas. ¿Cómo puedo hacer eso?

Estoy usando BusyBox y Linux.

ex:

mover todos los archivos y carpetas /my/path/a/my/path/subfolder/.

Las soluciones para copiar y luego eliminar no son asequibles.

Gracias.

Respuesta1

mv * subfolder 

Por supuesto, no se podrá mover el directorio "subcarpeta" dentro de sí mismo, pero todo lo demás se moverá.

Respuesta2

Las soluciones que usan *(ampliadas por shell) no funcionarán con demasiados objetos en /my/path/. En tal caso obtendrás:

argument list too long

Este enfoque no utiliza *:

cd /my/path/ &&
find . -mindepth 1 -maxdepth 1 ! -name subfolder -exec mv -t subfolder/ {} +

Desafortunadamente -mindepth, -maxdepthlas opciones de findno son compatibles con POSIX; Ninguna -tde las opciones lo mves, creo.

Esta variante debe satisfacer POSIX:

cd /my/path/ &&
find . ! -name . -prune ! -name subfolder -exec mv {} subfolder/ \;

(me adaptéesta respuesta de Unix y Linux SE). Lamentablemente, solicita mvtodos los objetos encontrados, por lo que es lento.


Enfoque alternativo rápido, si tan solo pudiera crear directorios nuevos (inicialmente ni /my/path/subfolder/deberían /my/subfolder/existir):

  • cambiar el nombre path/a subfolder/,
  • recrear path/,
  • entra .subfolder/path/

Tenga en cuenta que en un sistema de archivos basado en inodos esto debería ser igualmente rápido, sin importar cuántos objetos haya en path/. El código:

cd /my/ &&
test ! -e subfolder/ && mv path/ subfolder/ &&
mkdir path/ &&
mv subfolder/ path/

En este caso usé &&mucho para enfatizar que el procedimiento debe abortar si alguno de sus pasos falla. Sin embargo, este enfoque es inconveniente si necesita path/o subfolder/tiene permisos, propiedad, etc. no predeterminados.

Respuesta3

La forma más sencilla de hacer esto es:

mv !(subfolder) subfolder

'!' significa NO, similar a los lenguajes de programación, donde mv moverá todos los archivos y carpetas a la subcarpeta requerida con la excepción de la subcarpeta.

Aquí se describen cosas adicionales como mover carpetas ocultas y carpetas de puntos:https://askubuntu.com/questions/91740/how-to-move-all-files-in-current-folder-to-subfolder

Respuesta4

Es posible que desee consultar el mvcomando. Puede intentar buscar todos los archivos y carpetas en un directorio y excluir un subdirectorio y luego copiar todo lo encontrado en ese subdirectorio usando findel mvcomando.

Ver una pregunta similar sobre desbordamiento de pilahttps://stackoverflow.com/questions/4612157/how-to-use-mv-command-to-move-files-except-those-in-a-specific-directory

información relacionada