Dziś pokażemy Ci drogę, którą możesz usuń pliki starsze niż „X” dni. Załóżmy, że chcesz usunąć pliki starsze niż 7 dni, ten artykuł pomoże ci to zrobić. Narzędzie find pozwala na przekazanie kilku interesujących argumentów, w tym jednego do wykonania innego polecenia na każdym pliku. Aby dowiedzieć się, które pliki są starsze niż określona liczba dni, użyjemy tego znajdź użyteczność a następnie użyj Polecenie rm aby je usunąć. Składnia polecenia jest następująca:
znajdź /ścieżka/do/plików* -mtime +5 -exec rm {} \;
Nie ponosimy odpowiedzialności za jakąkolwiek utratę danych, która może wystąpić. Polecamy wypisz pliki i sprawdź przed ich usunięciem, uruchamiając następujące polecenie:
znajdź /ścieżka/do/plików* -mtime +5 -exec ls {} \;
Uwaga: Między rm, {} i \;

Wyjaśnienie polecenia:
Pierwszym argumentem w powyższym poleceniu jest ścieżka do plików. Drugi argument to -Mtime służy do określenia, ile dni ma plik. Jeśli wpiszesz +5, znajdzie pliki starsze niż pięć dni. Ostatni argument to -Exec pozwala na przekazanie polecenia, takiego jak rm. ten {} \; na końcu wymagane jest przerwanie polecenia.
Powinno to działać na prawie wszystkich wersjach Linuksa, takich jak Ubuntu, Fedora, Red Hat, Suse itp. Jeśli napotkasz jakiś problem, który wydaje się tutaj całkiem niemożliwy, daj nam znać w komentarzach poniżej.
Użyłem tej sztuczki! Niesamowita sztuczka! Dzięki za udostępnienie tak dobrego triku :)
Tak, użyłem tej komendy podczas sesji treningowej RHCE.
find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld
alias 5DayLs="find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld"
Zrobiłem coś razem z twojej sugestii tutaj. Metoda tworzenia listy plików w postaci zwykłego tekstu, które mają pięć dni. Łatwiejsze prowadzenie rejestru do przeglądania przed usunięciem plików. Użytkownicy mogą następnie użyć cat, vi, vim, gedit, emacs, aby zobaczyć, co mogą wyrzucić.
find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld
Podział ./ to bieżący katalog. Znajdź przy użyciu bieżącego katalogu często bezpieczniej niż przy użyciu / cannon. >> dołącza do pliku, jeśli nie istnieje, zostaje utworzony.
Nawet myślałem, że może to być przydatne jako alias. Prawdopodobnie mógłby/powinien najpierw przenieść go do skryptu powłoki. Będąc leniwym, późno tutaj.
Dziękuję! Użyłem tej składni w zadaniu cron.
Dobra wskazówka, aby usunąć pliki starsze niż określone dni. Jednakże, jeśli twoja lista argumentów jest długa (myślę, że max to 65535 lub coś w tym stylu), to nie zadziała.
Mam niestandardowy skrypt, który wykonuje zadanie:
#!/bin/bash
cd /directory-to-be-checked
allfiles=`ls`
NOW=`date +%s`
for filename in $allfiles
do
OLD=`stat -c %Z $filename`
if [ "$2" == "" ]
then
DELAY=86400
else
let "DELAY=$2 * 86400"
fi
AGE=`expr $NOW - $OLD`
#echo "Delay is $DELAY and Age is $AGE"
#exit 0
if [ $AGE -gt $DELAY ]
then
#echo "File $filename is $AGE"
fstamp=`ls -l $filename`
if [ "$1" == "DEL" ]
then
echo "Deleting file $filename"
`rm -f $filename`
else
echo "$fstamp"
fi
fi
Dotację.
Dzięki za przekazanie scenariusza.
Twoje powitanie Namase.
Wywołaj skrypt w ten sposób:
./scriptname.sh DEL numDays
Jeśli numDays nie zostanie określone, użyje co najmniej 1, więc upewnij się, że podałeś numDays. Nie ponoszę odpowiedzialności za sposób korzystania z tego skryptu i za jakąkolwiek utratę danych, która może wystąpić.
jeśli chcę usunąć katalogi i pliki sprzed 30 dni na moim zdalnym komputerze i jedną rzecz z wyjątkiem 1 i 2 lub 3 katalogów, więc jak mogę to zrobić ..? Podziel się swoimi przemyśleniami.
Używam tej techniki, która jest bardzo przydatna do usuwania pliku trc w Oracle
Dziękujemy za udostępnienie tego przydatnego polecenia wszystkim użytkownikom. W Linuksie możemy łatwo usunąć starsze pliki. Ja też tego szukam iw końcu znalazłem rozwiązanie.
Czy to powoduje również pobieranie plików w podkatalogach? Jeśli tak, jak mam to zrobić, żeby tak się nie stało?
znajdź /home/greg/logs -type f -mtime +5 -exec rm {} ;
Szukałem takiego polecenia. Naprawdę pomocny. I dzięki za udostępnienie scenariusza, Vivian.