Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: 0xenon 0xenon 30. 10. 2019, 12:31:45
-
mam tuhle mnozinu 'kodovanych' nazvu souboru:
aaa-bbb-ccc-txt
aaa-bbb-ccc.txt
aaa-bbb.ccc.txt
aaa_bbb-ccc_txt
aaa.bbb-ccc_txt
...
jde o to z techto nazvu sestavit spravny nazev souboru, pricemz priponu vzdy predchazi dany znak, v tomto pripade (-|.|_)
takze vysledek by mel byt:
aaa-bbb-ccc-txt => aaa-bbb-ccc.txt
aaa-bbb-ccc.txt => aaa-bbb-ccc.txt
aaa-bbb.ccc.txt => aaa-bbb.ccc.txt
aaa_bbb-ccc_txt => aaa_bbb-ccc.txt
aaa.bbb-ccc_txt => aaa.bbb-ccc.txt
idealne sed, perl
diky
-
( rev | sed [nahraď první výskyt] | rev ) < odkud-bereš-původní-názvy
Anebo, jestli jsou všechny přípony stejně dlouhé (dle vzorku to vypadá, že jo), stačí "upravit" čtvrtý znak od konce.
-
sed 's/\(.*\)\([_.\-]\)\(.*\)[_.\-]\(.*\)/\1\2\3.\4/'
-
Ta pripona je vzdy txt ? Pokud ano, bylo by to jednoduzsi. Pred priponou je vzdy tento znak, jeden z techto 3 znaku -._ ? Jsou nazvy souboru stejne dlouhe ?
Pokud je pripona vzdy txt a txt neni jinde v nazvu souboru (nazy souboru muzou byt pritom ruzne dlouhe), tak:
Puvodni_Nazvy | sed "s/\-txt/\.txt/g" | sed "s/_txt/\.txt/g" >> Nove_Nazvy
Jinak velmi doporucuji pouzivat v nazvu i pripone souboru 62 alfa-numerickych znaku a podtrzitko _, pred priponou pak tecku. Jinak to v budoucnu muze prinest komplikace.
-
puvodni_nazvy | perl -pe 's/.([^._-]+$)/.$1/'
-
Ta pripona je vzdy txt ? Pokud ano, bylo by to jednoduzsi. Pred priponou je vzdy tento znak, jeden z techto 3 znaku -._ ? Jsou nazvy souboru stejne dlouhe ?
Pokud je pripona vzdy txt a txt neni jinde v nazvu souboru (nazy souboru muzou byt pritom ruzne dlouhe), tak:
Puvodni_Nazvy | sed "s/\-txt/\.txt/g" | sed "s/_txt/\.txt/g" >> Nove_Nazvy
Jinak velmi doporucuji pouzivat v nazvu i pripone souboru 62 alfa-numerickych znaku a podtrzitko _, pred priponou pak tecku. Jinak to v budoucnu muze prinest komplikace.
S tim jen souhlas, ja ty nazvy netvoril, jen potrebuju dat dohromady alespon priponu. Ty zkomoleniny vznikly z urcitych duvodu.
Pripona se muze lisit a i jeji velikost. Navic filename muze obsahovat non-ascii znaky.
-
Takže poslední ._- nahradit tečkou?
sed 's/\(.*\)[._-]\([^._-]*\)/\1.\2/'
-
A dej si pozor na kolize:
123-456-789.txt
123-456-789_txt
budou mít po přejmenování stejné jméno.
Takže pro jistotu na konci zkontroluj:
cat vysledny_seznam | sort | uniq -d
-
A dej si pozor na kolize:
123-456-789.txt
123-456-789_txt
budou mít po přejmenování stejné jméno.
Takže pro jistotu na konci zkontroluj:
cat vysledny_seznam | sort | uniq -d
no vidis, diky za upozorneni