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.
Suraj Salunkhe
Użyłem tej sztuczki! Niesamowita sztuczka! Dzięki za udostępnienie tak dobrego triku :)
Amruta Patil
Tak, użyłem tej komendy podczas sesji treningowej RHCE.
Ben
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.
Bena Pipera
Dziękuję! Użyłem tej składni w zadaniu cron.
Vivian
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ę.
Rajesh Namase
Dzięki za przekazanie scenariusza.
Vivian
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ć.
Pawan
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.
Ali
Używam tej techniki, która jest bardzo przydatna do usuwania pliku trc w Oracle
Ethan
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.
Greg
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 {} ;
Suraj Salunkhe
Szukałem takiego polecenia. Naprawdę pomocny. I dzięki za udostępnienie scenariusza, Vivian.