Sto cercando di trovare file JPG in un albero di cartelle per eseguire il comando "" per trasformarlo in PDF.
Il problema è che il codice che sto eseguendo lascia il file nella stessa directory e voglio spostarlo ma preservare la struttura dell'albero dei file.
Quello che ho provato finora è:
find . -iname '*.jpg' -exec mogrify -format pdf '{}' \;
Questo comando funziona perfettamente. Voglio manipolare "{}" spostando una parte del suo contenuto;
{} = ./1/aa.xxx
e voglio convertirlo in:
{} = ./new/1/aa.pdf
grazie a @ mpez0 posso du di piccole modifiche e ottenere una soluzione:
find . -iname '*.jpg' | while read file ; do
oldfile=${file##*/};
olddir=${file/"$oldfile"/""};
pdfdir=${file/'./''./PDF'};
pdfdir=${pdfdir/"$oldfile"/""};
savedir=${file/'./''./OLD'};
savedir=${savedir/"$oldfile"/""};
newfile=${oldfile/.[Jj][Pp][Gg]/.pdf};
mogrify -format pdf "$file";
mkdir -p "$pdfdir";
mkdir -p "$savedir";
mv -- "$olddir$newfile" "$pdfdir$newfile";
mv -- "$olddir$oldfile" "$savedir$oldfile";
done
cosa fa questo codice:
find . -iname '*.jpg'
trova tutti i file che terminano con jpg e JPG
while read file ; do
se l'azione ottiene un file ani salva la rotta nella variabile file
oldfile=${file##*/};
elimina il file pat e salva il nome del file nella variabile oldfile
olddir=${file/"$oldfile"/""};
elimina il nome del file per salvare il pat in olddir
pdfdir=${file/'./''./PDF'};
cambio ./ in ./pdf e salvare il nuovo pat in pdfdir
pdfdir=${pdfdir/"$oldfile"/""};
estrarre il nome del file per salvare il pdf in pdfdir
savedir=${file/'./''./OLD'};
cambio ./ in ./old e salvare il nuovo pat in savedir
savedir=${savedir/"$oldfile"/""};
estrarre il nome del file per salvare il pdf pat in savedir
newfile=${oldfile/.[Jj][Pp][Gg]/.pdf};
salvare il nome del nuovo file che verrà creato in newfile
mogrify -format pdf "$file";
convertire il file
in pdf
mkdir -p "$pdfdir";
creare le directory del pat pdfdir
mkdir -p "$savedir";
creare le directory del pat savedir
mv -- "$olddir$newfile" "$pdfdir$newfile";
spostare il nuovo file pdf creare nella directory pdf
mv -- "$olddir$oldfile" "$savedir$oldfile";
sposta il vecchio file jpg nella vecchia directory e
done
procedi
Spero che questo possa aiutare gli altri