Masz prawie rację. -mtime 365
będą wszystkie pliki, które mają dokładnie 365 dni. Chcesz te, które mają 365 dni lub więcej, co oznacza dodanie +
przed liczbą taką jak ta -mtime +365
.
Możesz być także zainteresowany -maxdepth 1
flagą, która uniemożliwia Ci przenoszenie przedmiotów w podkatalogach.
Jeśli chcesz mieć pewność, że przenosisz tylko pliki, a nie katalogi, dodaj -type f
do wiersza.
Na końcu wiersza dodajemy \;
, aby find
wiedzieć, że to koniec wykonywanego polecenia.
Więc linia powinna być:
find /sourcedirectory -maxdepth 1 -mtime +365 -type f -exec mv "{}" /destination/directory/ \;
Aby być bezpiecznym, zacznij od wykonania polecenia ls -l zamiast mv - w ten sposób możesz z wyprzedzeniem sprawdzić, czy otrzymujesz dokładnie te pliki, które chcesz, przed ponownym uruchomieniem go za pomocą mv:
find /sourcedirectory -maxdepth 1 -mtime +365 -type f -exec ls -l {} \;
Jenny D mówi Przywróć Monikę
źródło
mtime
jest to czas modyfikacji (który brzmi jak to, czego prawdopodobnie chcesz - przez większość czasu). Jeśli te dzienniki są odczytywane / do których często się odwołujesz, możesz z nich skorzystać-atime
(czas ostatniego dostępu).exec
instrukcji. Zobacz stronę podręcznika dlafind
.Zachowaj ostrożność podczas korzystania z powyższych rozwiązań, użyłem ich i skończyłem przenoszeniem wszystkich plików we wszystkich podfolderach !!!!
To polecenie przenosi wszystkie pliki w katalogu / source i wszystkie podfoldery w katalogu źródłowym:
Zamiast tego użyj opcji -maxdepth 1 tylko dla plików w / sourcedirectory
źródło
-type f
. Czy miałeś na myśli to, że podfoldery się przenoszą, ale ich zawartość pozostaje w podfolderach zamiast się z nich przenosić lub ...?Możesz użyć tego polecenia i określić, że znajdziesz tylko pliki, a nie katalog, a plik jest starszy niż rok
źródło
rm
? Twoje polecenie usuwa zarówno pliki dziennika, jak i katalog docelowy.Możesz użyć poniższego polecenia atime, jeśli pliki są często używane
źródło
Prawidłowe byłoby usunięcie kończącego ukośnika z
/sourcedirectory/
źródło
find: missing argument
błędu, jednak zgadzam się, że usunięcie ukośnika końcowego/sourcedirectory
jest prawidłowe.