2009-04-22 24 views
7

Quiero mover todos los archivos que coincidan con un determinado patrón en el directorio actual a otro directorio.Mover archivos a un directorio

Por ejemplo, ¿cómo movería todos los archivos que comienzan con nz a un directorio llamado foobar? Intenté usar mv para eso, pero no funcionó bien.

+1

¿Cómo está escribiendo un script bash para hacer esto no relacionado con la programación? – RobS

+0

¿cómo es necesario escribir un script bash para resolver su problema? –

+0

no necesita un script bash para esto ... no relacionado con la programación – Shree

Respuesta

8
find . | grep "your_pattern" | xargs mv destination_directory 

hace lo siguiente:

  • encuentra todos los archivos en el directorio actual
  • los filtros de acuerdo a su patrón de
  • Mueve todos los archivos resultantes a el directorio de destino
+0

No grep nombres de archivo. Especialmente no con find (1): tiene -name. Además, no use xargs sin -0. Especialmente no con find (1): tiene -exec. – lhunath

+0

Excepto por el hecho de que find puede buscar nombres, ¿qué podría salir mal con los nombres de archivo grepping? –

1

Esto lo hará, aunque si tiene cualquier directorio que comience con nz también lo moverá.

for files in nz* 
do 
mv $files foobar 
done 

Editar: Como se muestra arriba esto totalmente exagerado. Sin embargo, para patrón más complejo coincide con que podría hacer algo como:

for files in `ls | grep [regexp]` 
do 
mv $files foobar 
done 
7

mv nz* foobar debe hacerlo.

1

Trate de usar "mmv", que está instalado en la mayoría de las distribuciones de Linux.

0

mv nz* foobar/

  • mv - se moverá o cambiar el nombre de archivo
  • nz - recibirá todos los elementos que se inician con los "Nueva Zelanda"
  • foobar/ - es el directorio donde todos los artículos entrarán en
Cuestiones relacionadas