Para hacerlo, abra una terminal y ejecute este comando:
mv -v ~/Downloads/* ~/Videos/
Moverá todos los archivos y carpetas de la carpeta Descargas a la carpeta Videos.
Para mover todos los archivos, pero no las carpetas:
Pero, si está interesado en mover todos los archivos (pero no las carpetas) de la carpeta Descargas a la carpeta Videos, use este comando
find ~/Downloads/ -type f -print0 | xargs -0 mv -t ~/Videos
Para mover solo archivos de las carpetas de Descarga, pero no de las subcarpetas:
Si desea mover todos los archivos de la carpeta Descargas, pero no los archivos dentro de las carpetas de la carpeta Descargas, use este comando:
find ~/Downloads/ -maxdepth 1 -type f -print0 | xargs -0 mv -t ~/Videos
aquí, la -maxdepth
opción especifica qué tan profundo debe intentar la búsqueda profunda, es
1
decir, solo el directorio especificado en el comando de búsqueda. Puedes intentar usar 2
, 3
también para probar.
Consulte la página de manual de búsqueda de Ubuntu para obtener una explicación detallada.
Solución
El comando encontrará todos los archivos normales en
/src/dir
(incluidos todos los subdirectorios) y los moverá al/dst/dir
mediante el comandomv
. Simplemente reemplace los directorios por los suyos. Los archivos con los mismos nombres serán renombrados automáticamente.Seleccionar archivos para mover
Si desea mover solo archivos MP3, agregue la
-iname "*.mp3"
opción alfind
comando después-type f
.Comparación con la respuesta de c0dev
Solo el segundo comando en la respuesta de c0dev responde la pregunta. A continuación se muestra cómo se compara con esta respuesta. Los puntos 3. y 4. pueden resolverse en la otra respuesta de la misma manera que aquí.
mv
la solución con-exec +
no necesita llamar a un comando adicional comoxargs
oparallel
y entregar los nombres de archivo dos veces.--backup=numbered
. Desafortunadamente, estas copias de seguridad con sufijo como~3~
estarán ocultas en la mayoría de los archivos administrados por defecto. Lamentablementemv
, no permite cambiar el sufijo, pero podría procesarse fácilmente mediante comandos adicionales. Esta es una extensión de GNU.-print0
-exec command {} +
forma parte de los estándares IEEE Std 1003.1 (POSIX), ISO / IEC 9945 y The Single UNIX Specification. Por lo tanto, debería ser más portátil. Consulte IEEE Std 1003.1, Edición 2004 , IEEE Std 1003.1, Edición 2013 y 0000243: Agregue -print0 para "buscar" . Pero de todos modos, el-t
cambio requerido demv
es una extensión GNU, por lo que todo el comando no es portátil entre los sistemas POSIX.Nota: En el caso
find
sería capaz de producir rutas que empiezan con-
(no sé de cualquier implementación defind
en este momento.) La{}
debe ir precedida por el indicador de fin de opciones:--
.fuente
{}
debe ser el último argumento. CorregidoDesafortunadamente, no tengo una reputación lo suficientemente alta como para comentar sobre la solución marcada. Sin embargo, quería advertir a los demás sobre un problema que encontré. Es bastante aficionado; sin embargo, cuando está haciendo varias cosas, puede que no le venga a la mente al principio. Con suerte, ayudará a otros.
Problema
Se proporcionaron variaciones del siguiente mensaje después de iniciar el comando. El comando luego crea múltiples archivos.
Porque
El
/src
es un padre de la/dst
(por ejemplo/src/../dst/
).Solución
Si bien puede haber una mejor solución, simplemente moví los archivos a un directorio temporal fuera de mi
/src
y luego volví a ordenar el comando para volver a colocarlos en el/src/../dst
directorio en el que quería que terminaran.fuente
My one-liner: esto funciona en Mac pero también debería funcionar en cualquier * nix. Comience desde el directorio principal.
La primera parte mueve todo, desde todas las subcarpetas a la carpeta real desde donde inicia el comando; la segunda parte comprueba si los subdirectores están vacíos (ahora deberían :-) y los elimina para que obtenga todo aquí sin subdirectores.
fuente
-not
operador no es estándar, por lo que su comando es menos portátil que los demás.Abra el terminal, cd a su carpeta de carpetas con archivos y ejecútelos
find . -mindepth 2 -type f -print -exec mv {} . \;
para mover todos los archivos de estos subdirectorios al actual.fuente