Nowe posty

xx Gdańsk (2)
Wczoraj o 12:59:57
xx W Grubie nie pokazuje ubuntu (1)
Wczoraj o 09:31:29
question Połączenie się z OEL 8 >> MS SQL (0)
2020-09-16, 12:05:25
xx PORADNIK ! [Poszukiwanie bledow] (2)
2020-09-15, 08:24:56
xx Po instalacji minta i tak startuje windows ... (8)
2020-09-13, 00:48:13
xx DHCP i Virtualbox (2)
2020-09-08, 20:56:37
xx Brak macierzy RAID w Ubuntu (3)
2020-09-08, 19:10:24
xx Edycja plików w lokalizacji /sys/class/net/eth0/statistics (1)
2020-09-04, 08:43:34
xx ikona uruchamiająca (chyba) skrypt w ubuntu 16 (4)
2020-09-02, 22:57:36
xx Postfix (2)
2020-09-01, 18:58:16

Autor Wątek: Jak wyciagnac nazwe pliku z ls -l  (Przeczytany 2818 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)