0
0
0
s2smodern

Rinominare un elevato numero di files può essere un'operazione noiosa. In questi casi è possibile utilizzare il terminale per un piccolo script che esegua l'operazione su tutti i files specificati.

Supponiamo di avere la seguente lista di files:

bodale@bodale-notebook:~/foto$ ls
peter.jpg  egon.jpg  raymond.jpg  winston.jpg

 

Aggiungere un prefisso (o un postfisso)

Per rinominarli, aggiungendo un prefisso(per un postfisso basta spostare la stringa dopo $1), è possibile utilizzare questa serie di comandi separata da punti e virgola (;):

bodale@bodale-notebook:~/foto$ for i in `ls *.jpg`; do mv $i ghostbusters_$i;done

Il risultato del comando sarà il seguente:

bodale@bodale-notebook:~/foto$ ls
ghostbusters_peter.jpg  ghostbusters_egon.jpg  ghostbusters_raymond.jpg  ghostbusters_winston.jpg

 

Rinominare più file da minuscolo a maiuscolo (e viceversa)

Per rinominare i file da minuscolo a maiuscolo (per il contrario invertire le opzioni) lanciare questo comando:

bodale@bodale-notebook:~/foto$ for i in *; do mv $i $(echo $i | tr [:lower:] [:upper:]); done

 

Sostituzione di testo nel nome del file

Per esempio è possibile cambiare l'estensione utilizzando il comando sed. Supponiamo di voler cambiare l'estensione dei file seguenti da .jpg a .jpeg.

Metodo A

bodale@bodale-notebook:~/foto$ for i in `ls`; do mv $i `echo $i | sed s/jpg/jpeg/g`;done

Il risultato sarà il seguente:

bodale@bodale-notebook:~/foto$ ls
ghostbusters_peter
.jpeg  ghostbusters_egon.jpeg  ghostbusters_raymond.jpeg  ghostbusters_winston.jpeg

 

Metodo B

Se vogliamo rinominare tutti i files contenuti all'interno di una cartella (ad esempio per sostituire un trattino basso con un meno) è possibile usare il seguente comando.

bodale@bodale-notebook:~/foto$ ls -1 | rename 's/_/-/g'

Nota: per far accettare al comando gli spazi è necessario anteporre il carattere "\" (quindi "\ ").

Il risultato sarà quindi il seguente:

bodale@bodale-notebook:~/foto$ ls
ghostbusters-peter
.jpeg  ghostbusters-egon.jpeg  ghostbusters-raymond.jpeg  ghostbusters-winston.jpeg

 

Ricorsione

Con questo script aggiungiamo "prefisso_" a tutti i file *.avi ricorsivamente anche nelle cartelle figlie della cartella in cui lo lanciamo:

#!/bin/bash
# Nome file: aggiungi_prefisso.sh
inputdir=$1
echo "Sto cercando i file"
for file in $(find $inputdir -iname "*.avi")
do
  name=$(basename $file .avi)
  directory=$(dirname $file)
  echo "rinomino il file $file ..."
  mv $file $directory/prefisso_$name.avi
done

O anche usando il comando sed per modificare il maiuscolo dell'estensione:

#!/bin/bash
# Nome file: pdf_minuscolo.sh
lista=`find -name "*.PDF"`
for i in $lista; do
  j=`echo $i | sed -e 's:PDF:pdf:g'` 
  mv $i $j

done

 


Aggiungi commento


Codice di sicurezza
Aggiorna

0
0
0
s2smodern

64 visitatori
nessun utente

Impronta Digitale Sysadmin Hero Cervello Colorato Bianco World Map Micro Services Matts Splunked Brain 2 Circuit Esagoni Matts Splunked Brain