Fájl átnevezése textfile string alapján

Sziasztok!

Egy olyan problémám lenne, hogy egy mappában levő PDF fájlt kellene átnevezni a mappában mellette levő ugyanolyan fájlnevű, de más kiterjesztésű text fájlban található minta után levő, "" karakterek közötti névre.
Pl. van egy DOC.pdf fájlom és egy DOC.txt-m. A DOC.txt-ben van egy sor amiben a köv. található: MetaDataValue = "1234". A DOC.pdf fájlomat át kellene nevezni Adat_1234.pdf-re

Köszönöm előre is!

Hozzászólások

Lehet mindenféle visszajelzésekkel fejleszteni, de hirtelen jó lesz:

#!/bin/bash

RENAME_TARGET=".pdf" # Átnevezni kívánt fájl kiterjesztése. NINCS CSILLAG!!!!
RENAME_STRING_SOURCE="*.txt" # Átnevezési adatot tartalmazó fájltípus. VAN CSILLAG!!!

RENAME_PREFIX="Adat_" # Átnevezési előtag
RENAME_POSTFIX=".pdf" # Átnevezési utótag

for i in `ls $RENAME_STRING_SOURCE`
do
TARGET="${i%.*}$RENAME_TARGET";
if [ -f "$TARGET" ]
then
EXTRACTED_STRING=`grep MetaDataValue "$i" | grep -Po '".*?"' | sed s/'"'/''/g`;
mv "${TARGET}" "${RENAME_PREFIX}${EXTRACTED_STRING}${RENAME_POSTFIX}";
fi
done

exit 0

--
Coding for fun. ;)

A megoldás szép is, valószínűleg jó is, csupán a jegyzőkönyv kedvéért: ne feledjük, hogy a grepeket és sedeket egybeolvasva kb. úgy ejtjük: awk.


awk -F'([[:space:]]*=[[:space:]]*)?"' '
   /^MetaDataValue/ {
      oldpdf = gensub( /txt$/, "pdf", 1, FILENAME)
      newpdf = $2 ".pdf"
      system( "mv "  oldpdf " " newpdf)
      nextfile
   }
' *.txt