Tengo un directorio con muchos archivos y directorios. Para ordenarlo, voy a poner todos esos archivos en un directorio, así que iba a hacer algo como esto:
$ ls | wc -l
123
$ mkdir new_directory
$ mv * ./new_directory
Sin embargo, obviamente, que no va a funcionar porque entonces se va a tratar de moverse new_directory
en new_directory
. ¿Hay alguna forma simple de hacer lo que quiero en una línea sin que tenga que copiar y pegar todos los archivos y directorios en ese directorio?
Respuestas:
Tu
comando realmente funcionará; solo imprimirá una advertencia de que no puede mover ese directorio dentro de sí mismo.fuente
git mv
debe usar la-k
bandera, ya que git fallará de forma predeterminada, no solo escupe una advertencia. Entonces tendrás que hacergit mv -k * ./new_dir
.Un forro rápido y sucio.
fuente
Si solo está buscando los archivos (es decir, no directorios), entonces
Es la solución más portátil. Para la velocidad, debe mover find y xargs, con -print0 y -0, pero solo si tiene GNU find y xargs.
fuente
find
- aunque definitivamente he estado en sistemas que no tienen uno, lamentablemente :(Las veces que tuve este problema, hice uno de los siguientes:
o
La segunda forma aprovecha los comodines que omiten los nombres de archivo que comienzan con '.'
fuente
qué pasa:
IOW, no mueva el contenido a un nuevo directorio, pero coloque este directorio dentro de uno nuevo.
fuente
De manera similar a la respuesta de @ Rembrane (aunque no de una sola línea):
Esto debería ser 100% portátil, incluso si
find
lamentablemente está ausente de su sistema.fuente
Mis sugerencias: como han dicho otros,
funcionará encontrar IFF la expansión total es lo suficientemente corta.
De lo contrario, puede probar este que escala a un número mucho mayor de archivos:
Explicación
fuente
-print0
y-0
y todavía se rompe.Utilizar:
Desde la
xargs
página del manual:fuente
Para evitar el mensaje de error y mantenerlo simple:
hará lo mismo pero evitará el mensaje de error (a menos que tenga puntos en los nombres de sus carpetas, supongo).
fuente