Script terminal per creare cartelle e copiare file in base a parte del nome file

0

Ho una cartella con migliaia di file in questo formato

  • filenameA - 1.ext
  • filenameA - 2.ext
  • filenameB - 1.ext

e talvolta

  • nomefile - 02.est

Ho bisogno di uno script che legga i file e crei una singola cartella con ciascun nome file distinto prima di "- # .ext" e quindi aggiunga tutti i file con lo stesso nome nella cartella.

Dall'esempio sopra avrei due cartelle 1) filenameA 2) filenameB -  ognuno con due file in loro. I dati effettivi contengono migliaia di file e ogni gruppo può contenere da 1 a 50 file, con numeri sequenziali aggiunti alla fine.

    
posta KeithS 13.03.2018 - 17:44
fonte

1 risposta

0

Se tutti i tuoi file seguono la convenzione di dirname - the_rest_and_ext (hai il - nel mezzo) puoi usare qualcosa del tipo:

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

Se tutti i file hanno la stessa estensione, puoi cambiare for in qualcosa di simile:

for f in *.ext; do

NOTA: assicurati di sapere cosa stai facendo.

    
risposta data 13.03.2018 - 18:18
fonte

Leggi altre domande sui tag