Skocz do zawartości

Brak reakcji wyszukiwania plików poleceniem FIND i ich kasowania.


Takaszi

Pomocna odpowiedź

#!/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ę. 

Link do komentarza
Share on other sites

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 przez ethanak
Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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ń?

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

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

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!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.