Devo lavorare su molti files .txt (ottenuti dai corrispettivi .pdf con l'ottimo pdftotext) generati da un sistema che assegna loro dei nomi alfanumerici casuali. Per creare un po' di ordine, vorrei rinominare questi files in modo da aggiungere a ciascuno un prefisso che ne descriva l'argomento, che in questo caso corrisponde al campo $1 (come inteso da awk) della prima riga di ciascun file. Insomma: i files *.txt che contengono al campo $1 della prima riga la parola PATATE dovrebbero essere rinominati come PATATE*.txt, per poi poter essere automaticamente indirizzati alla directory /PATATE).

chiesto 26 Nov '14, 23:34

piccolo%20principiante's gravatar image

piccolo prin...
157112027

modificato 26 Nov '14, 23:38


Ecco:

#!/bin/bash

# per ogni file nella directory corrente
for f in *.txt; do

    # estraggo il primo campo della prima riga
    campo="$(awk '{ print $1; exit }' "$f")"

    # se non esiste già, creo una directory con lo stesso nome del campo
    mkdir -p "$campo"

    # sposto il file nella directory indicata, modificando anche il nome del file
    mv "$f" "$campo"/"$campo$f"
done
coll. permanente

ha risposto 27 Nov '14, 10:20

enzotib's gravatar image

enzotib ♦♦
14.0k112186

modificato 27 Nov '14, 10:21

Grazie e scusa per il feedback tardivo. Mi ero bloccato sulla sintassi per assegnare l'output di awk ad una variabile (in questo caso $campo)...

(28 Nov '14, 21:41) piccolo prin... piccolo%20principiante's gravatar image
La tua risposta
abilita/disabilita anteprima

Segui questa domanda

Via email:

Una volta eseguito l'accesso potrai iscriverti a tutti gli aggiornamenti qui

Via RSS:

Risposte

Risposte e commenti

Basi di markdown

  • *corsivo* o __corsivo__
  • **grassetto** o __grassetto__
  • collegamento:[testo](http://url.com/ "titolo")
  • immagine?![alt testo](/path/img.jpg "titolo")
  • elenco numerato: 1. Foo 2. Bar
  • per aggiungere un'interruzione di riga, aggiungi due spazi a fine riga e premi «Invio»
  • è supportato anche semplice HTML

Tag:

×91
×46
×3

domanda posta: 26 Nov '14, 23:34

domanda visualizzata: 1,106 volte

ultimo aggiornamento: 28 Nov '14, 21:41

Chiedi è un servizio di supporto gestito da Ubuntu-it. Contattaci!

powered by OSQAPostgreSQL database
Ubuntu e Canonical sono marchi registrati da Canonical Ltd.