Ga naar inhoud


Volgorde gegevens (naam) bestand


Denisdaf

Aanbevolen berichten

@De_Perre

 

Mooi script :-)

Toch nog even:

 

> Het is net de bedoeling om de bestanden te renamen zodat ze eventueel na download op PC

> of move naar een ander storage deze ook die nieuwe naam hebben.

> Dat gaat niet lukken met symbolic links denk ik.

 

Jawel. Dat gaat prima. Zeker als je de copy op Windows uitvoert zal Windows geen idee

hebben dat er een symbolic link staat en gewoon keurig de hele file copieren onder de nieuwe naam.

 

> En de vrees qua schijfruimte lijkt me ook onterecht omdat er geen copy wordt gedaan, maar een filemove;

 

Het verschil is dat jouw script onomkeerbaar is. Als het fout gaat, kun je niet meer terug.

In het geval van de linked methode gooi je gewoon het resultaat weg als je ontevreden bent

en kun je gewoon opnieuw beginnen.

 

Als je een hardlink gebruikt (ln zonder -s) kun je zelfs de source directory weggooien als je klaar bent

omdat bij hard links de file content past verdwijnt als alle referenties zijn verwijderd.

ET10000 + Wavefrontier T90 + OpenATV + DNS323

Link naar reactie
Delen op andere sites


Net even getest met een 'ln -s' en lijkt inderdaad wel te lukken.

Zal het script later deze week dan wel even aanpassen en opnieuw posten.

[Vu+ Solo4K] - [VTi 13.x]

[TVV Basic+] - [CD TopHD]
Ik vind het nieuwe overzicht met ongelezen topics in een tijdslijn maar niks...

Link naar reactie
Delen op andere sites

Zoals beloofd, nieuwe versie met aanmaak van symbolic link in plaats van filemove. Stuk code voor filemove zit er nog steeds in.

#!/bin/sh

######
# Script om bestandsnamen van opnames te gaan aanpassen
##

#Geef wat feedback in de console; toon waar je mee bezig bent
#Uncomment wanneer je de terminal output wil zien
#set -x

#####Variabelen die we gebruiken
startdate=$(date +"%Y%m%d-%H%M")
dir_in=/media/hdd/movie_tmp
dir_out=/media/hdd/movie_out
logdir=/media/hdd/renamelogs
rename_script_log=$logdir/rename_$startdate".log"
filelist=$logdir/filelist_$startdate.log
filelist2=$logdir/filelist_$startdate"_2".csv


#####Functies

fn_check_inputdir()
{

if [ ! -d $dir_in ]
then
	echo "Input dir bestaat niet; script wordt afgebroken - error 6" >> $rename_script_log
	exit 6
fi
}

fn_check_outputdir()
{

if [ ! -d $dir_out ]
then
	echo "Output dir bestaat niet; script wordt afgebroken - error 7" >> $rename_script_log
	exit 7
fi
}

fn_check_logdir()
{

if [ ! -d $logdir ]
then
	mkdir $logdir
fi
}

fn_create_list_files()
{
#functie die de lijst maakt van bestanden aanwezig in de input dir ($dir_in); en die in een logbestand wegschrijft
#Hiervoor wordt het find commando gebruikt
#  '! -mtime -1' zorgt er voor dat bestanden die de laatste minuut zijn aangepast niet mee in del ijst terecht komen
#  '! -name ".vdirinfo*" zal er voor zorgen dat bestanden die beginnen met '.vdirinfo' uitgesloten worden en niet mee in de lijst terecht komen
#  het stukje sed zal er voor zorgen dat de naam van het bestand weggeschreven wordt zonder './' in het begin

cd $dir_in
find . -type f ! -mtime -1 ! -name ".vdirinfo*" | sed 's|./||' >> $filelist

}

fn_process_filelist()
{

#functie die doorheen de filelist loopt en de bestandnaam opbouwt + de filemove doet
## gewenste output formaat = eerst de naam, dan de datum, en dan de zender

#  progNAAM zal nog verder opgesplitst moeten worden => de naam en de extensie van het bestand
#  bij progEXT wordt er gekeken naar het aantal fields in de input. Indien er maar 2 zijn, zal hij enkel de laatste gebruiken voor de extensie (bv .ts); 
#    anders gaat hij de 2de en 3de gebruiken


while read Line 
do
progDATUM=`echo $Line | awk -v FS=" - " ' { print $1 } '`
progSERVICE=`echo $Line | awk -v FS=" - " ' { print $2 } '`
progNAAM=`echo $Line | awk -v FS=" - " ' { print $3 } ' `
progNAAMBASE=`echo  $progNAAM | awk -v FS="." ' { print $1 } '` 
#progEXT=`echo  $progNAAM | awk -v FS="." ' { print $2"."$3 } '` #nog nakijken; variabel aantal extensies!!
progEXT=`echo  $progNAAM | awk -v FS="." ' { if (NF==2) {print $2} else if (NF==3) {print $2"."$3} } '`


newFileNAAM=$progNAAMBASE" - "$progDATUM" - "$progSERVICE"."$progEXT

echo $Line";""$newFileNAAM" >> $filelist2

####Dit stuk zal een filemove doen; uncomment de volgende 3 lijnen wanneer je dit wil doen door het #-teken weg te nemen
#echo "> Move van $dir_in/$Line naar $dir_out/$newFileNAAM"| tee -a $rename_script_log
#mv "$dir_in/$Line" "$dir_out/$newFileNAAM" | tee -a $rename_script_log
#echo "--> Move van $dir_in/$Line naar $dir_out/$newFileNAAM voltooid"| tee -a $rename_script_log
####Einde filemove


####Dit stuk creert symbolic links naar de originele filenames. Zet deze lijnen in commentaar door een #-teken aan het begin van de lijn te zetten
echo "> Aanmaak symbolic link met naam $dir_out/$newFileNAAM      en verwijzend naar      $dir_in/$Line"| tee -a $rename_script_log
ln -s "$dir_in/$Line" "$dir_out/$newFileNAAM"
echo "--> Aanmaak symbolic link voltooid"| tee -a $rename_script_log
####


done < $filelist

echo "## $filelist is nu verwerkt" | tee -a $rename_script_log
}


##Start verwerking door oproepen functies
###Check logdir
fn_check_logdir

###Check input en output dirs
fn_check_inputdir
fn_check_outputdir

###maak lijst bestanden
fn_create_list_files

###verwerking van de lijst
fn_process_filelist


##Eventuele opkuis van logs/tijdelijke bestanden/...
#rm $filelist


##The exit is near...
exit 0

txt bestand downloaden; filelocaties aanpassen (dir_in; dir_uit; log locatie); en '.txt' vervangen door '.sh'.

Rename_movies.txt

[Vu+ Solo4K] - [VTi 13.x]

[TVV Basic+] - [CD TopHD]
Ik vind het nieuwe overzicht met ongelezen topics in een tijdslijn maar niks...

Link naar reactie
Delen op andere sites

Maak een account aan of log in om te reageren

Je moet een lid zijn om een reactie te kunnen achterlaten

Account aanmaken

Registreer voor een nieuwe account in onze community. Het is erg gemakkelijk!

Registreer een nieuwe account

Inloggen

Heb je reeds een account? Log hier in.

Nu inloggen
  • Wie is er online   0 leden

    • Er zijn geen geregistreerde gebruikers deze pagina aan het bekijken
×
×
  • Nieuwe aanmaken...