forked from AkshayAgarwal007/Jekyll-Mono
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path2008-05-08-organizzare-i-file-sulla-base-del-loro.html
20 lines (15 loc) · 3.39 KB
/
2008-05-08-organizzare-i-file-sulla-base-del-loro.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
---
layout: post
title: Organizzare i file sulla base del loro nome
date: '2008-05-08T17:31:00.000+02:00'
author: Luca Ferrari
tags:
- linux
- università
modified_time: '2008-05-08T17:43:54.391+02:00'
blogger_id: tag:blogger.com,1999:blog-1836481905487384887.post-5193116304406355146
blogger_orig_url: http://fluca1978.blogspot.com/2008/05/organizzare-i-file-sulla-base-del-loro.html
permalink: /:year/:month/:day/:title.html
---
<h1>~</h1>
Il programma che presento qui è un semplice script shell che organizza i file in cartelle a seconda del loro nome, che viene usato come chiave parlante.<br /><br />Supponendo di avere una serie di file in formato PDF (e con estensione <span style="font-style: italic;">.pdf</span>), il cui nome è composto da un prefisso identico (<span style="font-style: italic;">statistiche-</span>), da un codice che identifica una tipologia (es. <span style="font-style: italic;">03000123</span>), e dalla data di generazione del file o della statistica (in formato <span style="font-style: italic;">gg_mm_yyyy_</span>) , tutti contenuti nella medesima cartella. Questi file devono essere archiviati in una directory diversa, con nome pari all'anno presente nel file (<span style="font-style: italic;">yyyy</span>) e al suo interno a sua volta in una cartella con nome pari al codice del file. In altre parole il file:<br /><br /><span style="font-style: italic;">statistiche-03000123-19_07_2008.pdf<br /><br /></span>deve essere archiviato come segue (creando le eventuali directory che non esistono):<br /><br /><span style="font-style: italic;">2008/03000123/statistiche-03000123-19_07_2008.pdf<br /><br /></span>Di seguito lo script che opera lo spostamento. Da notare l'utilizzo del comando <span style="font-style: italic;">sed(1)</span> per la separazione della stringa nome file nelle sue componenti, come pure la creazione delle directory con flag <span style="font-style: italic;">-p<span style="font-style: italic;"><span style="font-style: italic;">.<br /><br /><br /></span></span></span><pre>#!/bin/bash<br /><br /># directory base ove lavorare<br />BASE_DIR=/mnt/pdf<br />ANNO=`date +'%Y'`<br /><br /><br /># se l'utente specifica un argomento allora<br /># considero che il primo argomento sia la directory<br /># di lavoro<br />if [ $# -ge 1 ]<br />then<br /> BASE_DIR=$1<br />fi<br /><br /><br /># controllo che la directory di lavoro esista<br />if [ ! -d "$BASE_DIR" ]<br /> then<br /> echo "La directory di lavoro $BASE_DIR non esiste"<br /> exit 1<br />fi<br /><br /><br /># entro nella directory di lavoro<br />cd "$BASE_DIR"<br /><br />for f in *.pdf<br />do<br /> # nome di base del file, dal quale ricavare le informazioni<br /> FILE=`basename "$f" ".pdf"`<br /><br /> # etsraggo il codice dal nome del file<br /> CODICE=`echo $FILE | sed 's/statistiche-\(.*\)-\(.*\)/\1/'`<br /><br /> # estraggo l'anno di pertinenza dalla data di stampa contenuta<br /> # nel nome del file<br /> ANNO=`echo $FILE | sed 's/statistiche-\(.*\)-[0-9][0-9]_[0-9][0-9]_\([0-9][0-9][0-9][0-9]\)/\2/'`<br /><br /> # la directory di destinazione di questo file<br /> # e' data dall'anno e dal codice<br /> DIR=$ANNO/$CODICE<br /><br /> if [ ! -d "$DIR" ]<br /> then<br /> mkdir -p $DIR >/dev/null 2>&1<br /> fi<br /><br /> # sposto il file<br /> mv $f $DIR -v<br />done<br /></pre><br /><span style="font-style: italic;"><span style="font-style: italic;"><span style="font-style: italic;"><br /></span></span></span>