Aller au contenu

Suppression de fichiers


Messages recommandés

Bonjour, 

Sur mon NAS j'ai quelque centaines de films (un film = un dossier).
Je cherche le moyen de supprimer automatiquement tous les dossiers qui contiennent un fichier *.avi de moins de 800Mo.
ça m'éviterai de le faire à la mains (feignantisse quand tu nos tiens  :P )
Avez-vous une solution simple à mon problème ? 

Merci d'avance pour vos lumières

Lien vers le commentaire
Partager sur d’autres sites

Probablement en ssh par lignes de commande. Je ne m'aventurerai pas à vous donner quoi que ce soit car je serais bien capable de vous faire effacer tout le disque et c'est pas ce que vous cherchez :lol:.

Il y a des cadors de linux sur le forum qui pourront sûrement vous donner une solution.

je pense @Gaetan Cambiernotamment. Il est averti par une notification.

Lien vers le commentaire
Partager sur d’autres sites

Il y a 18 heures, Fenrir a dit :

 


find /volume1/video/ -name "*.avi" -type f -size -800M -exec ls -l {} \;

 

Merci, j'ai testé ça sélectionne bien les avi de moins de 800M

Donc pour effacer les répertoire les contenant je tape :

find /volume1/video/ -name "*.avi" -type f -size -800M -exec rm -f {} \ rmdir *;

Désolé je n'y connais pas grand chose

 

 

Lien vers le commentaire
Partager sur d’autres sites

Il y a 1 heure, wehtam a dit :

Ok mais dans mes répertoire j'ai d'autres fichiers avec les *.avi donc le dossier ne sera pas vide.

donc il ne sera pas supprimé

Si tu souhaites supprimer tous les dossiers (contenu compris) qui contiennent un certain type de fichier (avi de 800mo), il faut le faire en plusieurs étapes, mais s'il y a des sous dossiers qui contiennent aussi des fichiers ... le dossier parent restera sauf s'il contient lui aussi un ficher avi de 800mo

Ta demande se rapproche plus d'un traitement manuel que d'un traitement automatisable

Tu peux tester ça (n'exécute surtout pas le fichier liste avant de l'avoir contrôlé), ne ne sais pas si la commande dirname existe sur un syno par contre :

dirname `find /volume1/video/ -name "*.avi" -type f -size -800M -exec ls {} \;` | awk '{print "rm -rf "$1}' > /tmp/liste
Modifié par Fenrir
Lien vers le commentaire
Partager sur d’autres sites

Il y a 15 heures, Fenrir a dit :

donc il ne sera pas supprimé

Si tu souhaites supprimer tous les dossiers (contenu compris) qui contiennent un certain type de fichier (avi de 800mo), il faut le faire en plusieurs étapes, mais s'il y a des sous dossiers qui contiennent aussi des fichiers ... le dossier parent restera sauf s'il contient lui aussi un ficher avi de 800mo

Ta demande se rapproche plus d'un traitement manuel que d'un traitement automatisable

Tu peux tester ça (n'exécute surtout pas le fichier liste avant de l'avoir contrôlé), ne ne sais pas si la commande dirname existe sur un syno par contre :


dirname `find /volume1/video/ -name "*.avi" -type f -size -800M -exec ls {} \;` | awk '{print "rm -rf "$1}' > /tmp/liste

J'ai testé la commande 

dirname `find /volume1/xbmc/FILM/ -name "*.avi" -type f -size -800M -exec ls {} \;` | awk '{print "rm -rf "$1}'

j'ai l'erreur suivante :

dirname: invalid option -- '2'

Quand je fais dirname --help

Voici le retour :

 

Usage: dirname [OPTION] NAME...
Output each NAME with its last non-slash component and trailing slashes
removed; if NAME contains no /'s, output '.' (meaning the current directory).

  -z, --zero     end each output line with NUL, not newline
      --help     display this help and exit
      --version  output version information and exit

Examples:
  dirname /usr/bin/          -> "/usr"
  dirname dir1/str dir2/str  -> "dir1" followed by "dir2"
  dirname stdio.h            -> "."

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Full documentation at: <http://www.gnu.org/software/coreutils/dirname>
or available locally via: info '(coreutils) dirname invocation'

Que faire ? 

En tout cas merci de ton aide

 

Lien vers le commentaire
Partager sur d’autres sites

Il y a 2 heures, Fenrir a dit :

certains de tes chemins doivent contenir des espaces ou des caractères spéciaux.

essaye comme ça


dirname "`find /volume1/video/ -name "*.avi" -type f -size -800M -exec ls {} \;`" | awk '{print "rm -rf "$1}' > /tmp/liste

ça marche un peu mieux sauf que le nom des dossiers sont coupés après le premier mot (par exemple au lieu de "/volume1/xbmc/FILM/Iron man" j'ai "/volume1/xbmc/FILM/Iron"  

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.