Nowe posty

xx zapis klatki filmu mp4 w postaci obrazu jpg (2)
Wczoraj o 22:33:32
xx Dystrybucja do szkolnej pracowni. (6)
Wczoraj o 18:39:04
xx Jaką dystrybucje polecacie pod mój sprzęt? (1)
Wczoraj o 14:53:22
xx Thunderbird - jedna poczta na dwóch dystrybucjach (3)
Wczoraj o 12:34:56
xx Nowe forum linuxowskie (5)
Wczoraj o 11:55:40
xx zrobmikompa.pl - co myślicie o tej stronce (8)
Wczoraj o 11:44:47
xx Jaka dystrybucja pod mon sprzęt? (1)
Wczoraj o 10:52:58
xx BIOS nie widzi dysku z Linuxem (2)
2019-09-14, 10:41:31
xx Problem z antiX wersja live (0)
2019-09-12, 20:56:49
xx Serwer do Nauki (5)
2019-09-05, 07:35:50

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

Offline Damian Dudycz

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 27
    • Zobacz profil
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}')

Offline jan karwowski

  • Users
  • Guru
  • *****
  • Wiadomości: 844
    • Zobacz profil
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)