Nowe posty

xx Jak usunąć kilka dowiązań twardych jednym poleceniem. (3)
2019-06-14, 12:12:10
xx Skrypt sprawdzający miejsce na dysku (1)
2019-06-13, 13:55:00
xx Samba server (3)
2019-06-10, 17:01:44
xx Skrypt tworzący użytkownika (3)
2019-06-07, 17:11:55
xx Jaki serwis komp. we Wrocławiu (0)
2019-06-06, 12:39:23
xx serwer wydruku (1)
2019-06-04, 13:57:58
xx mod_security i roundcube (0)
2019-05-27, 14:27:03
xx Touchpad po pewnym losowym czasie przestaje reagować (33)
2019-05-27, 10:14:21
xx [ROZWIĄZANY] przygotowanie zeskanowanego pdf do OCR (6)
2019-05-24, 14:46:43
xx Przydatne Linki (1)
2019-05-23, 18:05:04

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