¿Cómo muevo una subcarpeta con contenido a una carpeta de origen diferente sin copiarla?

¿Cómo muevo una subcarpeta con contenido a una carpeta de origen diferente sin copiarla?

Sé que me lo han preguntado un millón de veces, pero no encuentro la respuesta a lo que intento hacer específicamente.

Aquí está la estructura del directorio:

Main Folder1
|
|-Subfolder 1
|-Subfolder 2 HasAReallyLongName
|---files
|-Subfolder 3-1000

Main Folder2
|
|-Subfolder 2 HasAReallyLongName
|---files
  • Quiero intentar mover la Subcarpeta2 con sus archivos a un directorio diferente.
  • No quiero copiar y luego eliminar nada porque no tengo suficiente espacio.
  • No quiero mv /Main/Sub2/* /Main2/porque eso pone todo en la /Main2carpeta y no en un subdirectorio.
  • No quiero mkdir /Main2/...porque es un nombre muy largo (principalmente marcas de tiempo) y no quiero escribirlo manualmente (y probablemente estropearlo)
  • Hasta donde yo sé, rsynctambién copia los archivos, así que no estoy seguro de que funcione.

¡Cualquier sugerencia u otra herramienta será muy apreciada!

Respuesta1

Esto es completamente sencillo.

mv /Main1/Sub2 /Main2

Esto crea el directorio /Main2/Sub2con todo el contenido del original y elimina el directorio /Main1/Sub2. Si no desea escribir el nombre completo, puede utilizar un globo; simplemente deje de escribir el nombre y finalice con *cuando haya ingresado suficientes caracteres para distinguir el nombre del directorio de todo lo demás en el directorio (¡tenga cuidado!):

mv /Main/Sub* /Main2

Posibles problemas que podrían estar provocando que esto no funcione como se esperaba:

  • Ya hay un directorio dentro /Main2con el mismo nombre que /Main1/Sub2. Esto provoca el error directory not empty, al igual mvque negarse a sobrescribir el directorio existente. Si este es el caso, cambie el nombre (o elimine) el directorio existente /Main2primero:

    mv /Main2/Sub2 /Main2/SomethingElse
    
  • Usando una ruta incorrecta. Recuerde que todo distingue entre mayúsculas y minúsculas y tenga en cuenta las rutas relativas y ~la expansión. Todos estos son diferentes según el directorio de trabajo actual.

    /Main1/Sub2
    Main1/Sub2
    ~/Main1/Sub2
    
  • No tiene permiso para escribir en el directorio de origen y/o destino. Esto será muy obvio por el mensaje de error: mv: cannot move 'thing' to '/place': Permission denied. En cuyo caso puedes ejecutar mi comando favorito para solucionar el problema.

    sudo !!
    

Respuesta2

Entendido: el uso sudo mv /Main1/Sub2 /Main2lo hizo por mí. Supongo que la principal diferencia es ser root.

información relacionada