2010-01-22 14 views
6

Mam program, który wymaga ścieżki do różnych plików. Pliki znajdują się w różnych folderach i są stale aktualizowane w nieregularnych odstępach czasu.Dowiązanie symboliczne do najnowszego pliku w folderze

Gdy pliki są aktualizowane, zmieniają nazwę, więc na przykład w folderze dir1 Mam fv01 i fv02. Później tego dnia ktoś dodaje fv02_v1; dzień po tym, jak ktoś dodaje fv03 i tak dalej. Innymi słowy, zawsze mam zaktualizowany plik, ale z inną nazwą.

Chcę utworzyć dowiązanie symboliczne w folderze "Uruchom" do tych plików, tak aby wspomniany odsyłacz zawsze wskazywał na ostatni utworzony plik.

Mogę to zrobić w Pythonie lub Bashie, ale zastanawiałem się, co tam jest, ponieważ nie jest to rzadko spotykany problem.

Jak byś się tym zajmował?

Dziękuję.

Juan

PS. Mój system operacyjny to Linux. Obecnie mam prosty demon (Python), który wygląda co jakiś czas (odświeża co minutę) dla najnowszego pliku. Wydaje mi się, że jest to przesada.

+1

Zastanawiam się, czy nie powinno to być bardziej pytanie o błąd serwera (http://serverfault.com/). – Omnifarious

+0

OP nie szuka składni polecenia. OP poszukuje prostszego lub bardziej eleganckiego sposobu rozwiązania problemu niż pisanie skryptu Python lub Bash, który automatycznie okresowo wykonuje "ln". – Omnifarious

+0

Chce to zrobić w bash lub python. Wygląda mi na pytanie programistyczne. – Duck

Odpowiedz

3

O ile nie ma jakiegoś ważnego powodu, dla którego pozostało niezatwierdzone (na przykład tysiące plików w katalogu), po prostu zrób to tak, jak sugerujesz, używając skryptu sortującego pliki według czasu modyfikacji. Nie znam żadnej tajnej metody.

Możesz napisać demona używając inotify, aby monitorować swoje katalogi i natychmiast ustawić linki, ale to wydaje się przesadą.

Edytuj: Właśnie widziałem twoją edycję. Ponieważ masz już demona, inotify może nie być takim złym pomysłem. Byłoby to nieco bardziej wydajne niż ciągłe wysyłanie zapytań, ponieważ system operacyjny pokaże, kiedy coś w katalogach się zmieniło.

Nie znam Pythona wystarczająco dobrze, aby wskazać ci coś konkretnego, ale musi istnieć opakowanie do inotify.

+0

Dziękuję, Duck. W końcu nie mogłem użyć 'inotify' dla powodów' libc', ale zapewniłeś mi dobry sposób na dostarczenie bardziej ogólnego rozwiązania, kiedy w końcu dokonamy aktualizacji. Dla rekordu dostępny jest moduł inotify Pythona. Dzięki jeszcze raz! (+1 i zaakceptowany) – Escualo

Powiązane problemy