¿Cómo muevo archivos y directorios a la carpeta principal en Linux?


Respuestas:


66
encontrar . -maxdepth 1 -exec mv {} .. \;

esto moverá archivos ocultos también.

Recibirá el mensaje:

mv: no se puede mover `. ' a `../. ': dispositivo o recurso ocupado

cuando intenta moverse .(directorio actual) pero eso no causará ningún daño.


1
También moverá todos los archivos de todos los subdirectorios al padre del directorio actual. Solía -maxdepth 1estar seguro.
phaphink

1
Ahora dice: mv: no puede moverse ./scripts' to ../scripts': directorio no está vacío

1
Debe tener un directorio llamado scripts en su directorio principal Y en su directorio actual. Tendrá que cambiar el nombre de este antes de moverlo.
phaphink

1
Funcionó, pero dejó una información muy importante: debe ejecutarla desde el subdirectorio. Además, esto no eliminará el subdirectorio en sí mismo, por lo que debe hacer una copia de seguridad de un directorio y hacer un rmdir en el subdirectorio.
crafter

90

Vine aquí porque soy nuevo en este tema también. Por alguna razón, lo anterior no me funcionó. Lo que hice para mover todos los archivos de un directorio a su directorio principal fue:

cd to/the/dir
mv * ../

12
Sin embargo, esto no mueve el archivo oculto
Wavesailor

1 transatlántico:(cd ${ANDROID_NDK_HOME}/android-ndk-r14b/ && mv * ../)
Dawid Drozd

10

Escriba esto en el shell:

mv *.* ..

Eso mueve TODOS los archivos un nivel más arriba.

El personaje *es un comodín. Por *.deblo tanto , moverá todos los archivos .deb y Zeitgeist.*moverá Zeitgeist.avi y Zeitgeist.srt una carpeta hacia arriba, ya que, por supuesto, ..indica el directorio principal.

Para mover todo, incluidas las carpetas, etc., solo use en *lugar de*.*


3
esto no funcionó con los directorios! o los archivos ocultos

Funciona con directorios, al menos para mí.
maaartinus

55
¿Quieres *no *.*incluir directorios
Chris S

Es un buen documental
BlackBurn027

6

No puede ser más simple que:

mv * ../

Para mover también archivos ocultos:

mv /path/subfolder/{.,}* /path/ 

mves un comando para mover archivos, *significa todos los archivos y carpetas y ../es la ruta al directorio principal.


2

En bash puedes usar shopt -s dotglob para hacer que * coincida con todos los archivos y moverlos simplemente

shopt -s dotglob; mv * ..

Esta no es la mejor solución ya que la configuración es permanente para el shell hasta que la cambie por

shopt -u dotglob

Pero creo que es bueno saberlo.


44
Llamarlo en un subnivel: (shopt -s dotglob && mv * ..). De esa manera, la opción solo es local para esa subshell.
Martin Ueding

Buena respuesta: es simple, incluye archivos ocultos y no causa un error al copiar ''. y '..'
Daniel Howard el

1

Un método que no causa errores y funciona siempre:

ls -1A . | while read -r file                                                    
do                                                                                  
    mv "./${file}" ..                                                            
done

1
find . -maxdepth 2 -type f -exec mv {} .. \;

Usé una variación de lo anterior para mover todos los archivos de las subcarpetas al padre.

Obtuve datos en carpetas por año, pero descubrí que al usar metadatos podría tenerlos todos en la misma carpeta, lo que facilitó la administración.

p.ej.

/data/2001/file_1
/data/2002/file_2
/data/2003/file_3

0

Suponiendo que todos sus archivos ocultos comienzan con un punto seguido de una letra o un número (que deberían), puede usar

mv * .[A-Za-z0-9]* ..

La .[A-Za-z0-9]*parte es asegurarse de que no intente moverse .o avanzar .., lo que podría fallar.


0

Es simple mover todos los archivos y carpetas al directorio principal en Linux.

Vaya a esa carpeta y use este comando:

mv * /the full path

Por ejemplo, si sus archivos y carpetas son los siguientes:

/home/abcuser/test/1.txt 
                   2.txt
                   3.jpg
                   4.php
                   1folder
                   2folder

Vaya a esa carpeta a través de cd:

cd /home/abcuser/test
mv * /home/abcuser

Todos sus archivos y carpetas se moverán a la carpeta abcuser (directorio principal).


2
Gracias @Gareth, estaba a punto de hacer lo mismo. Abhishek, por favor no publique ningún enlace no relacionado, ¿qué sentido tiene eso? Además, verifique su formato por favor. Además, /the full pathno funciona en Linux, tienes que escapar de espacios con /the\ full\ path.
slhck


0
find -type f|while read line; do mv $line ${line##*/}; done

Gracias por contribuir con una respuesta. Si bien esto podría funcionar en escenarios simples, la tubería finden while readuna mala manera de utilizar find, y mejores respuestas ya se han publicado.
Scott

-1

cambie al subdirectorio y ejecute el siguiente comando para copiar o mover archivos.

Por ejemplo: a es el directorio principal yb es el subdirectorio, queremos mover / copiar todos los archivos de b a a (subdirectorio al directorio principal).

cd b
cp * ..
mv * ..

¡Bienvenido a Super User! Esto duplica otra respuesta y no agrega contenido nuevo. No publique una respuesta a menos que realmente tenga algo nuevo que aportar.
DavidPostill
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.