wehtam Posté(e) le 27 février 2017 Posté(e) le 27 février 2017 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 )Avez-vous une solution simple à mon problème ? Merci d'avance pour vos lumières 0 Citer
Mic13710 Posté(e) le 27 février 2017 Posté(e) le 27 février 2017 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 . 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. 0 Citer
Fenrir Posté(e) le 27 février 2017 Posté(e) le 27 février 2017 find /volume1/video/ -name "*.avi" -type f -size -800M -exec ls -l {} \; Il suffira de remplacer le "ls -l" par un "rm -f" puis de faire un "rmdir *" à la fin 0 Citer
wehtam Posté(e) le 28 février 2017 Auteur Posté(e) le 28 février 2017 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 0 Citer
Fenrir Posté(e) le 28 février 2017 Posté(e) le 28 février 2017 Il faut le faire en 2 fois. find /volume1/video/ -name "*.avi" -type f -size -800M -exec rm -f {} \; Puis pour supprimer les dossiers vides il suffira de lancer la 2nde commande : rmdir /volume1/video/* 0 Citer
wehtam Posté(e) le 28 février 2017 Auteur Posté(e) le 28 février 2017 Ok mais dans mes répertoire j'ai d'autres fichiers avec les *.avi donc le dossier ne sera pas vide. Il faudrait dès que l'on trouve un avi de moins de 800Mo, ça supprime le dossier qui le contient et tout son contenu. 0 Citer
Fenrir Posté(e) le 28 février 2017 Posté(e) le 28 février 2017 (modifié) 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é le 28 février 2017 par Fenrir 0 Citer
wehtam Posté(e) le 1 mars 2017 Auteur Posté(e) le 1 mars 2017 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 0 Citer
Fenrir Posté(e) le 1 mars 2017 Posté(e) le 1 mars 2017 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 0 Citer
wehtam Posté(e) le 1 mars 2017 Auteur Posté(e) le 1 mars 2017 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" 0 Citer
Messages recommandés
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.