GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Estrarre nomi dal nome file in Bash?

Ho una directory piena di migliaia di file nel formato CognomeNomeAAAAMMGG.pdf. Il cognome e il nome saranno sempre in maiuscolo.

Vorrei estrarre il cognome in modo da poter spostare questi file in una struttura di directory di {first letter of last name}/lastname/full filename. Esempio:DoeJohn20190327 verrebbe spostato in D/Doe/DoeJohn20190327

Risposta accettata:

Qui hai una soluzione. L'ho testato e crea le cartelle come hai spiegato.

for filename in *.pdf
do
  echo "Processing file $filename "
  first_letter="${filename:0:1}"
  mkdir -p $first_letter #if already exists won't print error
  last_name=$(echo $filename | sed 's/\([^[:blank:]]\)\([[:upper:]]\)/\1 \2/g'  |awk '{print $1}')
  mkdir -p $first_letter/$last_name
  mv $filename $first_letter/$last_name
done

Ubuntu
  1. Eseguire script Bash all'ingresso di una directory?

  2. Come escludere alcuni file dal meccanismo di espansione del nome file in Bash?

  3. Perché non posso usare Cd in uno script Bash??

  4. Ottieni il percorso completo da Bash Script?

  5. a partire da apachectl bash

Bash break:come uscire da un loop

Installazione di programmi dallo script Bash?

Esegue lo script bash dall'URL

Bash:Nessun file o directory di questo tipo?

Come eseguire uno script bash?

Come estrarre il nome del file senza l'estensione da un percorso completo?