Tengo un directorio que está desempaquetado, pero está en una carpeta. ¿Cómo puedo subir el contenido un nivel? Estoy accediendo a CentOS a través de SSH.
127
Con la carpeta llamada 'myfolder' y un nivel superior en la jerarquía de archivos (el punto que desea que se coloque), el comando sería:
mv myfolder/* .
Entonces, por ejemplo, si los datos estaban /home/myuser/myfolder
allí, /home/myuser/
ejecute el comando.
.*
no solo*
si el archivo contiene archivos de puntos. Agregue también `&& rmdir myfolder` al final o para eliminar la carpeta ahora extraña. Esto se guarda porque solo se ejecutará si el mv devuelve el éxito Y porque rmdir no eliminará un directorio no vacío..*
. Eliminar la carpeta original es trivial y no se solicita, por lo que dejaremos que OP se encargue de eso.*
y.*
en una línea? solo curiosidadmv
Todos los argumentos para serán fuentes excepto el ÚLTIMO argumento que debe ser el objetivo para mover (y en el caso de múltiples fuentes, debe ser una carpeta)./bin/mv: Argument list too long
Solo para aclararlo, tomado de la respuesta de Rudu anterior, y de los comentarios.
Si necesita mover todo el contenido, INCLUIDOS los archivos que comienzan con a. (como .htaccess, .git, etc.), debe incluir tanto * como. * en su comando. Al igual que:
Eso moverá el contenido de la subcarpeta a su carpeta actual. Tenga en cuenta el espacio antes del último ".".
fuente
mv: rename fake/. to ./.: Invalid argument
ymv: rename fake/.. to ./..: Invalid argument
Esto es posible con los siguientes métodos:
Utilizando
rsync
:Usando
cp
yrmdir
:Usando
mv
(con ladotglob
opción habilitada):dónde
foo/
está tu carpeta cuyo contenido se va a mover un nivel hacia arriba.Ver:
help shopt
yman bash
.Usando
mv
(como se sugiere aquí ):Nota: Perdería un archivo llamado
foo/..bar..
.Nota: Para los shells POSIX, necesita
[!.]
.fuente
-v
,-u
,-a
y-r
haciendo? AFAICT,-v
es detallado, lo que hace que rsync imprima más información.-u
significa actualización: solo copie un archivo si es más nuevo. Eso no parece relevante.-a
significa archivo. Eso copiará el propietario y los permisos del archivo, y hará que la sincronización sea recursiva.-r
significa recursivo, pero eso ya está cubierto por-a
.-u
es útil cuando no desea pasar más tiempo moviendo datos que ya están allí (especialmente para dispositivos de almacenamiento lento). He eliminado-r
, ya que está cubierto por-a
lo que mencionaste.mv foo/* foo/.[^.]* .
echaría de menos un archivo llamadofoo/..bar..
por ejemplo. Tenga en cuenta que para shells POSIX, necesita[!.]
.rsync -vua --delete-after foo/ .
elimina todo lo demás que ya podría existir en el directorio actual.solo emita un comando mv
si desea eliminar el directorio, agregue
Se supone que está en un directorio padre de (directorio)
Si estás dentro del (directorio) entonces
fuente
rmdir
queja y se cierra si el directorio no está vacío, mientrasrm -r
que simplemente lo habría eliminado y todo su contenido. (Es un poka-yoke .).DS_store
en macOS. Elmv
comando anterior no los moverá (sindotglob
establecer).para aquellos de ustedes en un servidor compartido tendrían que usar algo como esto
Para mover los archivos
mv -v ~/public_html/public_html/* ~/public_html/
Para copiar los archivos
cp -a ~/public_html/public_html/* ~/public_html/
fuente