Esta es una pregunta un poco vergonzosa, pero tengo que admitir que al final de mi carrera todavía tengo preguntas sobre el comando mv.
Con frecuencia tengo este problema: necesito mover todos los archivos recursivamente un nivel hacia arriba. Digamos que tengo una carpeta foo y una barra de carpetas dentro de ella. Bar tiene un montón de archivos y carpetas, incluidos archivos y carpetas de puntos. ¿Cómo muevo todo en la barra al nivel foo?
Si foo está vacío, simplemente muevo la barra un nivel más arriba, elimino foo y cambio el nombre de la barra a foo. Parte del problema es que no puedo entender cuál es el comodín de mv para "todo, incluidos los puntos". Una parte de esta pregunta es esta: ¿hay una discusión en profundidad de los comodines que los comandos cp y mv usan en alguna parte (buscar en Google esto solo trae tutoriales muy básicos).
fuente
To eliminate the error caused by also matching "." and "..", use this command: mv bar/{,.[!.],..?}* .
La forma más fácil de hacer esto es hacerlo en dos comandos, porque * no coincide con lo que sea.
No desea utilizar la barra /.* que descubrí al cometer este error:
Esto es algo malo. Alguien quiere adivinar por qué? ;-)
fuente
.*
a.
y..
. Zsh no lo hace para mí al menos.Lo primero que debe saber sobre el globbing: lo hace el shell, no el comando. Consulte la página de manual de su shell para ver todos los detalles.
fuente
Éste recoge todos los archivos de las subcarpetas y los mueve al directorio actual
Si desea sobrescribir archivos con el mismo nombre, use
fuente
mv .??* *
se encargará de todo, excepto el punto seguido de un solo carácter. Si eso es común para su situación, puede agregar.[a-zA-Z0-9]*
. Que aún dejará archivos con nombres como.;
,.^
, y.^I
(TAB). Si necesita manejar todo, deberá ser un poco más complejo.fuente
Si tiene una estructura de directorio
/foo/bar/
y desea mover todos los archivos enbar
un paso anterior, vaya albar
directorio y escriba lo siguiente:En general, creo que
cpio(1)
es mejor para este tipo de tareas. Puede consultar la documentación detallada emitiéndolainfo cpio
en su shell.fuente