Vyhledávání podle časového razítka souboru
Souborové systémy Unix/Linux mají na každém souboru tři typy časového razítka. Jsou následující:
- Čas přístupu (-atime) :Časové razítko, kdy byl soubor naposledy otevřen.
- Čas úpravy (-mtime) :Časové razítko, kdy byl soubor naposledy upraven.
- Změnit čas (-ctime) :Časové razítko, kdy byla metadata souboru (jako jsou oprávnění nebo vlastnictví) naposledy upravena.
Vyhledejte a odstraňte soubor starší než 7 dní
Vezměme si příklad, kde najdeme a smažeme soubor starší než 7 dní. Použijeme možnost „-mtime “ příkazu find pro tento účel.
1. Získejte seznam souborů pomocí příkazu find následovně:
# find /path_to_directory -mtime +7 -type f -exec ls {}\;
2. Pokud názvy souborů začínají nějakým konkrétním vzorem, filtrujte jej následovně:
# find /path_to_directory -name 'filenamepattern*' -mtime +7 -type f -exec ls {}\;
3. Po kontrole a potvrzení výstupu přejděte k odstranění skriptu (je to velmi DŮLEŽITÉ), jinak dojde k nenapravitelné ztrátě dat.
# find /path_to_directory -name 'filenamepattern*' -mtime +7 -type f -exec rm -fv {}\;
4. Pokud je to nutné provést na vzdáleném serveru pomocí úlohy cron a zaznamenat názvy souborů smazaných souborů, použijte následující příkaz
# ssh user@remote_ip "find /path_to_directory -name 'filenamepattern*' -mtime +7 -type f -exec rm -fv {} \; >> /tmp/backup_deletion`date +%Y%m%d`.log 2>&1"
Závěr
-mtime parametr vyhledá soubory na základě času modifikace; -ctime vyhledává na základě času změny. -atime, -mtime a -ctime používají čas měřený ve dnech. Příkaz find také podporuje možnosti, které měří v minutách. Jsou to následující:
- -amin (doba přístupu)
- -mmin (doba úpravy)
- -cmin (čas změny)
Chcete-li například vytisknout všechny soubory, které mají přístupovou dobu starší než sedm minut, použijte následující příkaz:
# find . -type f -amin +7 -print
-novější možnost
Volba -newer určuje referenční soubor s časem modifikace, který bude použit k výběru souborů upravených nedávno než referenční soubor.
Najděte všechny soubory, které byly změněny nedávno než soubor file.txt:
# find . -type f -newer file.txt -print