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!
- 4262 megtekintés
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
- A hozzászóláshoz be kell jelentkezni
Ez addig jó is, amíg nincs a filenevekben szóköz.
A sed-et lehet, így írtam volna: sed 's/"//g'
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
A témaindító által megadott fájlnevekben nincs szóköz, emellett elég könnyen lehet azt orvosolni, ha mégis van. A sed ízlés meg megszokás dolga, de jogos.
--
Coding for fun. ;)
- A hozzászóláshoz be kell jelentkezni
a fájlnévben sosincs szóköz. Ezt egy szkenner állítja elő "DOC_" prefix + sorszám formátumban.
- A hozzászóláshoz be kell jelentkezni
Nagyon kemény! Köszönöm szépen!
- A hozzászóláshoz be kell jelentkezni
Szívesen.
--
Coding for fun. ;)
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
"ne feledjük, hogy a grepeket és sedeket egybeolvasva kb. úgy ejtjük: awk."
Ez tetszik.... :)
- A hozzászóláshoz be kell jelentkezni
Kénytelen leszek elmélyülni az awk-ban. :D :D
--
Coding for fun. ;)
- A hozzászóláshoz be kell jelentkezni