Nowe posty

Autor Wątek: Jak wyciagnac nazwe pliku z ls -l  (Przeczytany 3012 razy)

OneGhost

  • Gość
Jak wyciagnac nazwe pliku z ls -l
« dnia: 2010-01-25, 18:07:07 »
czesc. Moze mi ktos pomoc w bashu? Musze wyciagnac do zmiennej nazwe pliku z ls -l. Doszedlem do tego, ze mam pojedyncza linie w postaci "drwxr-xr-x 9 dudyczdamian dudyczdamian 4096 01-14 19:20 Busta Rhymes". Za pomoca awk potrafie pobrac tylko Busta. Reszta nazwy pliku, ktora jest po spacji juz oczywiscie nie jest wpisywana. Jak pobrac do zmiennej calosc nazwy pliku? Narazie robie to tak: x=$(echo $wiersz | awk -F" " '{print $8}')

jk33

  • Gość
Jak wyciagnac nazwe pliku z ls -l
« Odpowiedź #1 dnia: 2010-01-25, 18:58:20 »
Hmm. popatrzyłem.. i gdyby nie to, że ls wyrównuje spacjami do równych kolumn. (i nie znalazłem opcji, żeby to zmienić), to można by było cutem to wyciągnąć. Tak.. mam propozycję (niekoniecznie elegancką) jak wyciągnąć nazwę z ls -lQ --quotind-stype=shell-always:
ls -lQ --quoting-style=shell-always|sed "s/^.*'\\(.*\\)'\\$/\\1/"
Na pewno mozna też jakimiś wewnętrznymi funkcjami basha próbować. Ale w tecj chwili nie mam czasu kombinować.


-- EDIT
Wymyśliłem jak usunąć te wielokrotne spacje.
ls -l|sed 's/ \\{1,\\}/ /g'
Dalej przepuszczasz to przez cut "-d " pobierając odpowiednią grupę pól. (uwaga: opcja "-d " musi być wzięta w cudzysłów lub spacja musi być poprzedzona backslashem, bo inaczej bash potraktuje tę spację jako separator opcji)