Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Cuore 04 Května 2014, 16:26:01

Název: odfiltrování cesty k souboru, složce
Přispěvatel: Cuore 04 Května 2014, 16:26:01
Ahoj,
jak odfiltrovat absolutní cestu?
Mám např.
Citace
/media/Data/cuore/prográmky/programy
/media/WDmyLive/Software/zalohy/Desktop/compiz.profile
/media/WDmyLive/Software/zalohy/Desktop/fstab_desktop
/media/WDmyLive/Software/zalohy/programy.txt
/home/cuore/Dokumenty/ip.odf
/media/WDmyLive/Software/.Apple
a výsledek by měl vypadat
Citace
programy
compiz.profile
fstab_desktop
programy.txt
ip.odf
.Apple
díky  ;)
Název: Re:odfiltrování cesty k souboru, složce
Přispěvatel: Vojtěch Trefný 04 Května 2014, 16:35:07
Kód: [Vybrat]
echo "/media/Data/cuore/prográmky/programy" | rev | cut -d "/" -f 1 | rev
Název: Re:odfiltrování cesty k souboru, složce
Přispěvatel: GdH 04 Května 2014, 19:10:13
Kód: [Vybrat]
basename
Název: Re:odfiltrování cesty k souboru, složce
Přispěvatel: Vojtěch Trefný 04 Května 2014, 19:11:25
Kód: [Vybrat]
basename

Sakra to je chytrý, to jsem neznal :)
Název: Re:odfiltrování cesty k souboru, složce
Přispěvatel: GdH 04 Května 2014, 19:15:20
:)
Nebo třeba oblíbený sed by byl taky jednodušší
Kód: [Vybrat]
sed 's/.*\///'
Název: Re:odfiltrování cesty k souboru, složce
Přispěvatel: Cuore 04 Května 2014, 19:22:23
sakra kam na to chodíte  :) s tím sedem jsem se mordoval, ale nějak  ::)
nicméně pokud budu mít textový dokument s odkazy, tak pomocí while read bych si vyčítal řádky a ten basename je moc krásný. Takhle by to šlo? je to jen nástřel
Kód: [Vybrat]
        cnt=0
   while read SIN; do
        cnt=$[cnt+1]
basename $SIN >> cil.txt
   done < $HOME/zdroj.txt
každopádně díky oběma
Název: Re:odfiltrování cesty k souboru, složce
Přispěvatel: GdH 04 Května 2014, 19:42:25
S tím sedem je to jen o pochopení regulárních výrazů:
cesta je dělená lomítky a regulární výrazy jsou žravé -> tudíž .*/ se zastaví až na posledním lomítku na řádku.

Jinak by ti místo while/read stačil ten sed:

Kód: [Vybrat]
sed 's/.*\///' zdroj > výsledek
A pokud bys to opravdu chtěl počítat, tak můžeš nejjednodušeji výsledek prohnat přes
Kód: [Vybrat]
wc -l
A ještě mě napadlo:
Kód: [Vybrat]
grep -Eo '[^/]+$';)
Název: Re:odfiltrování cesty k souboru, složce
Přispěvatel: Avogadrus 05 Května 2014, 09:11:39
Pokud budeš mít ten textový soubor se seznamem tak stačí
Kód: [Vybrat]
echo ${line##*/} pro každý řádek