Respuestas:
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.
.*
. 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 curiosidad
mv
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:
mv subfolder/* subfolder/.* .
Eso moverá el contenido de la subcarpeta a su carpeta actual. Tenga en cuenta el espacio antes del último ".".
mv: rename fake/. to ./.: Invalid argument
ymv: rename fake/.. to ./..: Invalid argument
Esto es posible con los siguientes métodos:
Utilizando rsync
:
rsync -vua --delete-after foo/ .
Usando cp
y rmdir
:
cp -vaR foo/. . && rmdir foo/
Usando mv
(con la dotglob
opción habilitada):
shopt -s dotglob # Includes filenames beginning with a dot.
mv -- foo/* . # Where foo/ is the folder consisting the files.
shopt -u dotglob # Disables previously enabled dotglob option.
dónde foo/
está tu carpeta cuyo contenido se va a mover un nivel hacia arriba.
Ver: help shopt
y man bash
.
Usando mv
(como se sugiere aquí ):
mv foo/* foo/.[^.]* . && rmdir foo/
Nota: Perdería un archivo llamado foo/..bar..
.
Nota: Para los shells POSIX, necesita [!.]
.
-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 llamado foo/..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
mv (directory)/* .
si desea eliminar el directorio, agregue
rm -rf (directory)
Se supone que está en un directorio padre de (directorio)
Si estás dentro del (directorio) entonces
mv * ../
.DS_store
en macOS. El mv
comando anterior no los moverá (sin dotglob
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/
.*
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.