Skocz do zawartości
Takaszi

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

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ę. 

Udostępnij ten post


Link to post
Share on other sites
(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 przez ethanak

Udostępnij ten post


Link to post
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.

Udostępnij ten post


Link to post
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ń?

Udostępnij ten post


Link to post
Share on other sites

Problem rozwiązany, dzięki za natchnienie. Wszystko działa. 🍻

Udostępnij ten post


Link to post
Share on other sites

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...