web-dev-qa-db-fra.com

Impossible de supprimer des fichiers à l'aide du script

Après une longue recherche, essais et erreurs, j'ai créé un script

#!/bin/bash

find /home/SHARE/temp/* -mtime +10 -exec rm {} \;

Une fois créé, il a été exécuté et supprimé tous les fichiers de plus de 10 jours mais a laissé les dossiers dans lesquels se trouvaient ces fichiers.

Je l'ai écrit en cron et maintenant je vois que ça ne fait rien.

Je l'ai peut-être mal écrit dans cron, mais lorsque j'essaie de l'exécuter manuellement, j'obtiens:

rm query: remove write-protected regular file

et demande de confirmer la suppression, puis dit

Permission denied

Comment faire en sorte que non seulement les fichiers mais aussi les dossiers soient supprimés?

Comment exécuter automatiquement un script avec des droits sudo?

Merci de votre aide

2
Garazd

Pour supprimer les répertoires vides ci-dessous mais sans inclure/home/SHARE/temp, utilisez

find /home/SHARE/temp -depth -mindepth 1 -type d -empty -exec rmdir {} \;

Pour supprimer uniquement les fichiers de votre commande d'origine, incluez -type f Donc

find /home/SHARE/temp -type f -mtime +10 -exec rm {} \;

Si vous utilisez ces commandes depuis cron, remplacez \; avec \\;

2
Jeffrey Ross

je crois que vous devez forcer la suppression d'un fichier car le fichier est en lecture seule en modifiant la ligne:

find /home/SHARE/temp/* -mtime +10 -exec rm {} \;

à

find /home/SHARE/temp/* -mtime +10 -exec "rm -f" {} \;

En plus de cela, vous apprécierez d'exécuter le script en utilisant l'utilisateur root.

1
Krishna Chalise