Script de terminal para crear carpetas y copiar archivos según parte del nombre de archivo

0

Tengo una carpeta con miles de archivos en este formato

  • nombre de archivo A - 1.ext
  • filenameA - 2.ext
  • filenameB - 1.ext

y algunas veces

  • filenameB - 02.ext

Necesito un script que lea los archivos y cree una sola carpeta con cada nombre de archivo distinto antes de "- # .ext" y luego agregue todos los archivos con el mismo nombre en la carpeta.

Del ejemplo anterior tendría dos carpetas 1) nombre de archivo A 2) nombre de archivoB -  cada uno con dos archivos en ellos. Los datos reales tienen miles de archivos y cada grupo puede tener de 1 a 50 archivos, con números secuenciales agregados al final.

    
pregunta KeithS 13.03.2018 - 17:44

1 respuesta

0

Si todos sus archivos siguen la convención de dirname - the_rest_and_ext (tenga - en el medio) puede usar algo como:

for f in *; do
   dir_name='echo "$f" | sed 's/ -.*//''
   mkdir -p "$dir_name"
   mv "$f" "$dir_name"
done

Si todos los archivos tienen la misma extensión, puedes cambiar el for a algo como:

for f in *.ext; do

NOTA: asegúrate de saber lo que estás haciendo.

    
respondido por el Mateusz Szlosek 13.03.2018 - 18:18

Lea otras preguntas en las etiquetas