TXT-Dateien basierend auf dem Dateiinhalt umbenennen (OSX)

TXT-Dateien basierend auf dem Dateiinhalt umbenennen (OSX)

Ich habe ungefähr 250 TXT-Dateien, die alle den Namen „link.txt“ haben und in Zeile 3 immer diese Informationen enthalten:

Titel: Irgendeine Art von Titel

Ich brauche eine Art Skript, das diese Dateien durchgehen, den Titel erfassen und als Dateinamen verwenden kann. Die Ordnerstruktur lautet: 1-links/20150528/1/. Es wäre also toll, wenn ich das Skript einfach in „1-links“ ausführen könnte und es nach Dateien mit dem Namen „link.txt“ suchen würde.

Ich verwende Mac OSX.

Kann mir jemand helfen?

Antwort1

So etwas kann funktionieren:

for i in `find . -name link.txt -type f`;
do
nn=$(sed -n -e 3p -e "s/title:\ // "$i")
mv "$i" "`dirname $i`/$nn"
done

Wenn Sie statt der Datei das letzte Verzeichnis im Pfad umbenennen möchten, können Sie Folgendes verwenden:

for i in `find . -name link.txt -type f`;
do
nn=$(sed  -n -e 's/title: //'  -e 3p $i)
odir=`dirname $i`
ndir=$(echo $odir|awk -v nn="$nn" -F\/ 'BEGIN {OFS="/"}  {$NF=nn;print}')
mv  "$odir" "$ndir"
done

verwandte Informationen