Estoy en el camino
/myuser/downloads/
Y creo una subcarpeta:
/myuser/downloads/new
Ahora quiero mover todos los archivos y carpetas / subcarpetas en la carpeta de descargas a la subcarpeta.
¿Cómo puedo hacer esto?
Lo intenté:
mv -R *.* new/
Pero mover no toma el interruptor -R parece.
mv * new
embargo, se quejan "no se puede mover a la nueva nueva" o algo similar. Quizásmv -i * new
para evitar sobreescrituras.Respuestas:
El comando
debería hacer el truco. Si no funciona, corre
shopt -s extglob
primero.Para mover también archivos / directorios ocultos (que comienzan con un punto), ejecute también
shopt -s dotglob
primero.Así que para resumir:
(siempre es mejor desarmar
dotglob
para evitar malas sorpresas).fuente
!(something)
?dev
a mi ubicación actual, tengo que ejecutarmv !(dev) dev
? Obtengo-bash: !: event not found
setopt extendedglob
para establecer el modo glob extendido en zsh.^
es el símbolo de exclusión, pormv ^new new
lo que sería el truco. luego para ver todas las opciones configuradas en zsh que puede usarsetopt
y para deshabilitar el modo glob extendido que puede hacerunsetopt extendedglob
Encontré algo como esto, pero es un poco más simple de entender, y podría funcionar bien para usted también:
Agregar una explicación a la solución anterior:
De las páginas del manual:
mv -t
grep -v
Explicado por paso:
ls
enumerará los archivos en el directorio actualgrep -v new
regresará canalizado a que no coincide con nuevoxargs mv -t new
moverá los archivos canalizados algrep -v
directorio de destinofuente
mv: illegal option -- t
. ¿Es esto porque estoy usandozsh
?mv
, (lo que significa que su versión de mv es diferente a lo que estaba usando) ¿qué sistema operativo está usando? Creo que cuando escribí esta respuesta estabacentos
usando Linux Distrobash
.mv: illegal option -- t
porque el mv de osx no tiene una-t
opción.zsh
, ¿entonces es probable que sea el sistema operativo entonces ...? ¡Gracias por aclararlo!Idea simple. Suponiendo que usted está en / miUsuario , cambiar el nombre de descargas de nuevo , crear una nueva descarga de directorio a continuación, pasar nuevo en él.
fuente
Si desea mover todos los archivos de una carpeta a una de sus subcarpetas, puede usar el siguiente comando:
Encontrará todos los archivos y luego los moverá a su subcarpeta.
@waltinator: agregado
-type d -name 'new' -prune
para evitar el desplazamiento de/myuser/downloads/new
.fuente
new
mv: missing file operand
Try 'mv --help' for more information
Puede probar este proceso alternativo: permanecer en el camino
pero, en lugar de crear primero el
/myuser/downloads/new/
directorio, en lugar de crear una carpeta en el/myuser/
directorio, con el comandomkdir ../new
, a continuación, mover todos los archivos endownloads
anew
, y finalmente moversenew
endownloads
. Puede hacer esto en una línea, mientras está en la/myuser/downloads/
ruta, con el comando:En este caso, usted no tiene que preocuparse por ningún tipo de "filtrado" de archivos / carpetas, ya que
new
está en el mismo nivel de la ruta comodownloads
, lo que sólo puede mover todo endownloads
anew
, y luego pasarnew
a downloads`.Sin embargo, si ya tiene la subcarpeta
new
creada y no desea crear otra, no se preocupe, simplemente cambie elmkdir
comando en el lado izquierdo del primero&&
en el comando que se muestra arriba a unmv
comando, empujando hacianew
arriba en el camino; en otras palabras, mientras todavía estás dentro/myuser/downloads/
, puedes cambiarmkdir ../new
amv new ..
. Luego, la subcarpetanew
[en el camino/myuser/downloads/new/
] se empuja hacia arriba/myuser/new/
, al mismo nivel que/myuser/downloads/
, y luego puede ejecutar el resto del comando como se muestra arriba. Todos juntos, tenemos, comenzando desde el camino/myuser/downloads/
:y, como quería "mover todos los archivos y carpetas / subcarpetas de la carpeta de descargas a la subcarpeta [
new
]", ¡ya está! Si hubiera querido mover solo archivos (o solo carpetas o [insertar movimiento de objetos más granular]), entonces tendría que usar otros comandos que pueden "filtrar" objetos, comogrep
. Sin embargo, los comandos escritos anteriormente son suficientes para sus propósitos.fuente