Gość Michał Napisano Kwiecień 23, 2012 Zgłoszenie Share Napisano Kwiecień 23, 2012 Witam, otóż mam problem, ponieważ muszę wyszukać katalogi zawierające pliki regularne (bez podkatalogów). Wiem że do tego trzeba użyć programu find, jednak w manualu znajduje się tylko jedna opcja (-empty), która znajduje tylko pliki puste albo regularne. Kompletnie tego nie rozumiem. Czy potrafiłby mi ktoś pomóc? Z góry dziękuję. Pozdrawiam. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
thof Napisano Kwiecień 23, 2012 Zgłoszenie Share Napisano Kwiecień 23, 2012 Ostatnio na forum podobne pytanie zadal chyba Twój kolega z roku lub klasy http://forum.fedora.pl/topic/25341-wyszukiwanie-najglebszych-podkatalogow Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Gość Michał Napisano Kwiecień 23, 2012 Zgłoszenie Share Napisano Kwiecień 23, 2012 No dzięki, widzę że bardzo podobny temat, tylko ja nie wiem co to są w ogóle te "pliki regularne" w google nie mogę znaleźć żadnych jasnych informacji na ten temat, nie mówiąc już o ich wyszukiwaniu poprzez find. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Kwiecień 23, 2012 Zgłoszenie Share Napisano Kwiecień 23, 2012 Podstawy Linuksa sie klaniaja, ale tego powinienes uczyc sie w szkole. W Linuksie plikiem jest link symboliczny, katalog, program, plik tekstowy, plik binarny (np. biblioteka), plik wykonywalny (odpowiednik windowsowego .exe) itp. Plik regularny w tym kontekscie, to prawdopodobnie kazdy plik, który nie jest katalogiem lub linkiem symbolicznym. Wykonaj polecenie ls -l w dowolnym katalogu. Wszystko gdzie pierwszym znakiem w linii jest myslnik, to plik regularny. Np. [waldo@F16 ~]$ ls -l /bin/sh lrwxrwxrwx. 1 root root 4 03-22 19:19 /bin/sh -> bash [waldo@F16 ~]$ ls -l /bin/bash -rwxr-xr-x. 1 root root 967072 03-13 16:53 /bin/bash /bin/bash jest plikiem regularnym a /bin/sh nie jest plikiem regularnym (link symboliczny). Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Gość Michał Napisano Kwiecień 23, 2012 Zgłoszenie Share Napisano Kwiecień 23, 2012 A to bardzo dzięki za to, teraz pozostaje się pomęczyć trochę jak wyświetlić wszystkie katalogi zawierające pliki regularne, w /usr i /var, ale mam nadzieję że już sam to rozgryze jakoś. Pozdrawiam ! Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
soncrash Napisano Kwiecień 24, 2012 Zgłoszenie Share Napisano Kwiecień 24, 2012 Witam w ten sloneczny dzionek ! Z góry przepraszam za pisanie posta pod postem, ale dzis sie dopiero zarejestrowalem a tamtego nie moge edytowac. Otóz chyba jestem na dobrej drodze zeby rozwiazac mój problem, chce sie w sumie upewnic tylko czy dobrze wyszukalem pliki regularne i wyswietlilem je w katalogach. Wklepalem to w terminal: find /{us,va}r -maxdepth 1 ! -empty ! -type l Find zwrócil to: /usr /usr/include /usr/share /usr/lib /usr/bin /usr/libexec /usr/sbin /usr/src /usr/local /var /var/empty /var/cache /var/spool /var/tmp /var/log /var/db /var/lib Pierwsze, ze katalogi usr i var ma przeszukac; Drugie (maxdepth 1), wyswietla tylko katalogi glówne bez podkatalogów; Trzecie (! empty), Wyrzuca wszystkie puste pliki i katalogi (tego nie jestem pewnien); Czwarte (!-type l), Tu dziekuje za pomoc koledze powyzej, za pomocy tego wyrzucam wszystkie pliki zawierajace dowiazanie symboliczne. Mam nadzieje,ze dobrze to ruszylem. A podam jeszcze tresc polecenia: W jednym zestawieniu nalezy przedstawic tylko wszystkie katalogi zawarte w strukturach /{us,va}r, które zawieraja jedynie pliki regularne bez podkatalogów. Prosze o jakies potwierdzenie czy to jest dobrze. Pozdrawiam, Michal Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
thof Napisano Kwiecień 24, 2012 Zgłoszenie Share Napisano Kwiecień 24, 2012 Nie mam pojecia w jaki sposób chcesz rozwiazac zadanie, kiedy nie rozumiesz tresci... Kazdy z tych katalogów, które zwrócil Ci taki find zawiera podkatalogi, a Ty masz zwrócic te, "które zawieraja jedynie pliki regularne bez podkatalogów." Ten Twój kolega z watku http://forum.fedora.pl/topic/25341-wyszukiwanie-najglebszych-podkatalogow przynajmniej zrozumial polecenie, bo rzeczywiscie zadanie sprowadza sie do zwrócenia najglebszych podkatalogów, czyli lisci, jesli przedstawic to na strukturze drzewiastej. A wlasnie w drzewie najczesciej jest przedstawiany system plików. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
soncrash Napisano Kwiecień 24, 2012 Zgłoszenie Share Napisano Kwiecień 24, 2012 Masz racje, zle zrozumialem polecenie, reasumujac dwa tematy powinno byc chyba cos takiego: [root@175688 wto kwi 24 16:08:56 soncrash]# find /{us,va}r -depth ! -empty ! -type l -printf '%d, %i, %s, %M, %m, %u, %p\n\r' | grep '^d' Tylko problem w tym, ze to nic nie zwraca Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Kwiecień 24, 2012 Zgłoszenie Share Napisano Kwiecień 24, 2012 grep ^d - pokaz wszystkie linie zaczynajace sie litera "d". Na pewno o to Ci chodzilo? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
soncrash Napisano Kwiecień 24, 2012 Zgłoszenie Share Napisano Kwiecień 24, 2012 Oj nie, chodzi o to zeby wyswietlic katalogi które sa liscmi (i tylko te), musza przy okazji zawierac pliki regularne. Juz 3 godziny sie z tym mecze Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Kwiecień 24, 2012 Zgłoszenie Share Napisano Kwiecień 24, 2012 Juz 3 godziny sie z tym mecze Nie sadze, zeby to kogokolwiek na tym forum powalilo Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
thof Napisano Kwiecień 24, 2012 Zgłoszenie Share Napisano Kwiecień 24, 2012 Wkleje trzeci raz ten sam link, tylko tym razem bezposrednio do postu zawierajacego gotowe rozwiazanie http://forum.fedora.pl/topic/25341-wyszukiwanie-najglebszych-podkatalogow/page__view__findpost__p__158144 Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
soncrash Napisano Kwiecień 24, 2012 Zgłoszenie Share Napisano Kwiecień 24, 2012 Dziekuje serdecznie, nie spostrzeglem ze to wystarczy wkleic tylko do basha ze zmieniona sciezka.. A moge sie jeszcze dowiedziec co znaczy ta linia? while read -r line Rozumiem ze while to petla ale nie wiem co znaczy read -r line Próbowalem cos wyczytac w man read - i czy dobrze zrozumialem ze to jest przejscie do kolejnej linii? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
thof Napisano Kwiecień 24, 2012 Zgłoszenie Share Napisano Kwiecień 24, 2012 Nie wyswietla plików, bo find /usr -type d sluzy wlasnie do zwrócenia wylacznie katalogów (d od directory). Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
soncrash Napisano Kwiecień 24, 2012 Zgłoszenie Share Napisano Kwiecień 24, 2012 Juz chyba ostatni raz pisze Zmodyfikowalem ten skrypt na potrzeby mojego zadania, bo oprócz tych katalogów maja sie jeszcze wyswietlac pewne informacje o nich, robie to za pomoca opcji -printf Mój zmodyfikowany skrypt wyglada nastepujaco: find /{us,va}r -type d ! -type l ! -empty -printf '%d, %i, %s, %M, %m, %u, %p\n\r' | while read -r line do if ! ls -l "$line" | grep -q '^d' then echo "$line" fi done I wyswietla cos takiego: .... 3, 17755, 4096, drwxr-xr-x, 755, root, /usr/share/perl5/File 3, 17783, 4096, drwxr-xr-x, 755, root, /usr/share/perl5/IPC: Nie ma takiego pliku ani katalogu 3, 17783, 4096, drwxr-xr-x, 755, root, /usr/share/perl5/IPC 3, 17797, 4096, drwxr-xr-x, 755, root, /usr/share/perl5/Math: Nie ma takiego pliku ani katalogu Czemu wyswietla bardzo czesto ze nie ma takiego pliku? Wszystko sie zaczelo dziac po dodaniu opcji priintf.. Pozdrawiam Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się