Nowe posty

Autor Wątek: Wyszukiwanie...  (Przeczytany 3111 razy)

noveen

  • Gość
Wyszukiwanie...
« dnia: 2010-06-21, 16:22:17 »
Witam,

Chce zrobić wyszukiwanie plików młodszych o zadany czas (-cmin) oraz żeby wynik był listowany od najmłodszego pliku (ls -t).
Mam takiego finda:

find /root/dane/ -maxdepth 1 -type f -name "*2010-06*" -cmin -30 | xargs ls -t
Wszystko działa jak należy do momentu kiedy nie znajduje wcale plików młodszych o zadany czas, w takim wypadku polecenie to zwraca dosłownie wszystko to co jest w katalogu - czego nie chce. W przypadku jeśli nie znalazł nic, niech nie zwraca nic... :]

Wymyśliłem do tego problemu polecenie alternatywne

find /root/dane/ -maxdepth 1 -type f -name "*2010-06*" -cmin -30 -exec ls -t {} \\;
W tym przypadku, sekcja -exec w ogóle nie działa, listowanie odbywa się zwykłym ls a mi zależy właśnie żeby to było ls -t

Za wszelkie podpowiedzi z góry dziękuje :)

chmooreck

  • Gość
Wyszukiwanie...
« Odpowiedź #1 dnia: 2010-06-22, 07:20:44 »
Cytat: noveen
W tym przypadku, sekcja -exec w ogóle nie działa, listowanie odbywa się zwykłym ls a mi zależy właśnie żeby to było ls -t
Działa prawidłowo. Tylko sortuje pojedyncze pliki (wyjście z find'a)...

Ja bym zapisał wynik pierwszego w zmiennej i ls wywował tylko wtedy, gdy nie jest pusta...
Przetestuj sobie też zachowanie jak w nazwach plików będą spacje.

arctgx

  • Gość
Wyszukiwanie...
« Odpowiedź #2 dnia: 2010-06-23, 01:06:39 »
Cytat: noveen
find /root/dane/ -maxdepth 1 -type f -name "*2010-06*" -cmin -30 | xargs ls -t
Wszystko działa jak należy do momentu kiedy nie znajduje wcale plików młodszych o zadany czas, w takim wypadku polecenie to zwraca dosłownie wszystko to co jest w katalogu - czego nie chce. W przypadku jeśli nie znalazł nic, niech nie zwraca nic... :])
Xargs ma opcję --no-run-if-empty lub krócej -r.