Takaszi Napisano Wrzesień 25, 2020 Udostępnij Napisano Wrzesień 25, 2020 #!/bin/bash #kasujemy pliki nagrań z kamery po n dniach /usr/bin/find /media/pi/DANE/Monitoring/ -type f -name '*avi' -mtime +7 -exec rm {} \; find /media/pi/DANE/Monitoring/ -type f -name '*avi' -mtime +7 -exec rm {} \; Żadna z linii komend nie robi nic, tzn. coś robi i nie zgłasza błędów natomiast pliki z katalogu nie znikają, gdzie popełniłem błąd? Pierwszą linijkę znalazłem w sieci (oprócz ścieżki), druga jest moją modyfikacją, od razu przyznam że nie rozumiem /usr/bin, co to znaczy. druga linia "find /media/pi/DANE/Monitoring/ -type f -name '*avi'" w takiej postaci wykonuje się i wyświetla listę plików, dalsza część kodu nic nie robi. Gdzie jest błąd? Pogubiłem się. Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Wrzesień 26, 2020 Udostępnij Wrzesień 26, 2020 (edytowany) 11 godzin temu, Takaszi napisał: od razu przyznam że nie rozumiem /usr/bin A wiesz o tym, że jak przepisujesz coś bezmyślnie nie rozumiejąc co to znaczy możesz np. zamiast skasowania niepotrzebnych plików avi - skasować sobie resztę dysku zostawiając tylko te pliki? Nie wiesz co znaczy /usr/bin, a wiesz co to C:\windows\system na przykład? No to to samo - ścieżka do pliku. Shell nie musi wiedzieć gdzie siedzi polecenie find, dlatego w skryptach lepiej podawać pełną ścieżkę. Pytanie: co zrobi: find /media/pi/DANE/Monitoring/ -type f -name '*avi' -mtime +7 Nie, nic nie skasuje, pytanie co wyświetli (powinien listę plików) Dalej: czy przypadkiem w nazwie pliku nie ma spacji? Bo jeśli tak, w Twoim przypadku rm potraktuje polecenie: rm pupa w kwiaty.avi jako polecenie skasowania trzech plików: pupa, w i kwiaty.avi. Drugie pytanie: o ile kojarzę poprzednie Twoje problemy nie jest przypadkiem tak, że próbujesz uruchomić to polecenie na dysku, który jeszcze nie jest zamontowany? Trzecie pytanie: czy zadałeś sobie trudu aby wpisać w terminal "man find" czy czekasz, aż ktoś na forum to zrobi w międzyczasie kombinując jak koń pod górkę? Do kasowania plików jest opcja -delete a nie jakieś smętne kombinacje z exec i rm. Tyle na temat "poleceń znalezionych gdzieś w sieci". Edytowano Wrzesień 26, 2020 przez ethanak Cytuj Link do komentarza Share on other sites More sharing options...
Takaszi Wrzesień 26, 2020 Autor tematu Udostępnij Wrzesień 26, 2020 8 godzin temu, ethanak napisał: "A wiesz o tym, że jak przepisujesz coś bezmyślnie nie rozumiejąc co to znaczy możesz np. zamiast skasowania niepotrzebnych plików avi - skasować sobie resztę dysku zostawiając tylko te pliki?" Spoko linijka zaczynająca się od /usr/bin jest po #, tylko przy kopiowaniu się nie załapał więc nie złego się nie dzieje, poza tym robię kopie. 8 godzin temu, ethanak napisał: "Nie wiesz co znaczy /usr/bin, a wiesz co to C:\windows\system na przykład? No to to samo - ścieżka do pliku. Shell nie musi wiedzieć gdzie siedzi polecenie find, dlatego w skryptach lepiej podawać pełną ścieżkę." A wiesz że nie wiedziałem, dziękuję za info. 8 godzin temu, ethanak napisał: "Pytanie: co zrobi: find /media/pi/DANE/Monitoring/ -type f -name '*avi' -mtime +7 Nie, nic nie skasuje, pytanie co wyświetli (powinien listę plików)" Wyświetla listę plików, ale tylko wtedy gdy wygląda tak. find /media/pi/DANE/Monitoring/ -type f -name '*avi '. 8 godzin temu, ethanak napisał: Dalej: czy przypadkiem w nazwie pliku nie ma spacji? Bo jeśli tak, w Twoim przypadku rm potraktuje polecenie: rm pupa w kwiaty.avi jako polecenie skasowania trzech plików: pupa, w i kwiaty.avi. nazwa pliku wygląda tak, 75-20200926174120.avi 8 godzin temu, ethanak napisał: Drugie pytanie: o ile kojarzę poprzednie Twoje problemy nie jest przypadkiem tak, że próbujesz uruchomić to polecenie na dysku, który jeszcze nie jest zamontowany? Ta teoria jest błędna, sprawdziłem i dysk jest montowany w pierwszej kolejności. A problem już nie jest istotny, gdyż moje rozwiązanie daje aktualizację bazy, co mi odpowiada. 8 godzin temu, ethanak napisał: Trzecie pytanie: czy zadałeś sobie trudu aby wpisać w terminal "man find" czy czekasz, aż ktoś na forum to zrobi w międzyczasie kombinując jak koń pod górkę? Do kasowania plików jest opcja -delete a nie jakieś smętne kombinacje z exec i rm. Tyle na temat "poleceń znalezionych gdzieś w sieci". Nie man find a find --help i tak sprawdziłem, a co do -exec to cytując Linux.pl: -exec polecenie ; Wykonuje polecenie; prawdziwe jeśli zwrócony został status 0. Wszelkie następne argumenty find są brane za argumenty polecenia, aż nie zostanie napotkany argument, składający się z `;'. Łańcuch `{}' jest podmieniany na obecnie przetwarzaną nazwę pliku. Obydwie te konstrukcje być może będą wymagały wycytowania (znakiem `\') aby uchronić je przed rozwinięciem przez powłokę. Polecenie jest wykonywane w katalogu startowym. Wydało mi się to sensowne więc pozwoliłem sobie na zadanie pytania, jednocześnie nie śmiąc nikogo urazić. Dziękuję za dogłębne zapoznanie się z moimi pytaniami i wątpliwościami, oraz za bezcenną pomoc. Serdecznie pozdrawiam. Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Wrzesień 26, 2020 Udostępnij Wrzesień 26, 2020 No to wyobraź sobie, że man find wyświetli ci dużo więcej niż find -help. A co do polecenia... pomyśl: jeśli polecenie wyświetlenia listy plików nic nie wyświetla, to co zrobi polecenie skasowania tych plików? Ot, takie przemyślenie na wieczór przy herbatce... A z ciekawości: masz tam pliki starsze niż tydzień? Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
Takaszi Wrzesień 26, 2020 Autor tematu Udostępnij Wrzesień 26, 2020 Problem rozwiązany, dzięki za natchnienie. Wszystko działa. 🍻 Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!