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 * newembargo, se quejan "no se puede mover a la nueva nueva" o algo similar. Quizásmv -i * newpara evitar sobreescrituras.Respuestas:
El comando
debería hacer el truco. Si no funciona, corre
shopt -s extglobprimero.Para mover también archivos / directorios ocultos (que comienzan con un punto), ejecute también
shopt -s dotglobprimero.Así que para resumir:
(siempre es mejor desarmar
dotglobpara evitar malas sorpresas).fuente
!(something)?deva mi ubicación actual, tengo que ejecutarmv !(dev) dev? Obtengo-bash: !: event not foundsetopt extendedglobpara establecer el modo glob extendido en zsh.^es el símbolo de exclusión, pormv ^new newlo que sería el truco. luego para ver todas las opciones configuradas en zsh que puede usarsetopty para deshabilitar el modo glob extendido que puede hacerunsetopt extendedglobEncontré 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 -tgrep -vExplicado por paso:
lsenumerará los archivos en el directorio actualgrep -v newregresará canalizado a que no coincide con nuevoxargs mv -t newmoverá los archivos canalizados algrep -vdirectorio 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 estabacentosusando Linux Distrobash.mv: illegal option -- tporque el mv de osx no tiene una-topció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' -prunepara evitar el desplazamiento de/myuser/downloads/new.fuente
newmv: missing file operandTry 'mv --help' for more informationPuede 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 endownloadsanew, y finalmente moversenewendownloads. 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
newestá en el mismo nivel de la ruta comodownloads, lo que sólo puede mover todo endownloadsanew, y luego pasarnewa downloads`.Sin embargo, si ya tiene la subcarpeta
newcreada y no desea crear otra, no se preocupe, simplemente cambie elmkdircomando en el lado izquierdo del primero&&en el comando que se muestra arriba a unmvcomando, empujando hacianewarriba en el camino; en otras palabras, mientras todavía estás dentro/myuser/downloads/, puedes cambiarmkdir ../newamv 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