Je souhaite supprimer un fichier et un dossier de plus de 7 jours, j'ai donc essayé
[17:07:14 [email protected]:~]# find /tmp/ -mindepth 1 -maxdepth 1 -ctime +7 -exec ls -l {} \;
Alors quand je lance find /tmp/ -mindepth 1 -maxdepth 1 -ctime +7 -exec ls -l {} \;
il n'affiche aucun répertoire, mais pour find /tmp/ -mindepth 1 -maxdepth 2 -ctime +7 -exec ls -l {} \;
il montre peu de fichiers dans subdir.
Quelle est la bonne façon de supprimer des fichiers/dossiers de plus de 7 jours dans un répertoire spécifique?
Vous pouvez utiliser ce morceau de code
find /tmp/* -mtime +7 -exec rm {} \;
Explication
Le premier argument est le chemin d'accès aux fichiers. Il peut s'agir d'un chemin, d'un répertoire ou d'un caractère générique comme dans l'exemple ci-dessus. Je recommanderais d'utiliser le chemin complet et de vous assurer que vous exécutez la commande sans l'exécutable pour vous assurer d'obtenir les bons résultats.
Le deuxième argument, -mtime, est utilisé pour spécifier le nombre de jours d'ancienneté du fichier. Si vous entrez +7, il trouvera des fichiers de plus de 7 jours.
Le troisième argument, -exec, vous permet de passer une commande telle que rm. Le {} \; à la fin est nécessaire pour terminer la commande.
Source: http://www.howtogeek.com/howto/ubuntu/delete-files-older-than-x-days-on-linux/
Pour supprimer des dossiers, après avoir vidé l'intérieur, vous pouvez rmdir
instad de rm
dans le morceau de code, même si vous ne voulez voir que les répertoires que vous pouvez ajouter
type -d
à un morceau de code tel que ci-dessous:
find /tmp/*/* -mtime +7 -type d -exec rmdir {} \;
Plus facile à faire
find /tmp/* -mtime +7 -exec rm -rf {} \;
Qui supprimera les fichiers et les répertoires
ma façon simple:
find /tmp/* -daystart -mtime +7 -delete
l'option daystart
mesure les temps depuis le début d'aujourd'hui plutôt que depuis 24 heures
réf: official_doc