Aller au contenu

Featured Replies

Posté(e)

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

Posté(e)

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.

Posté(e)
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

Posté(e)
  • Auteur
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

 

 

Posté(e)

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/*

 

Posté(e)
  • Auteur

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.

Posté(e)
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

Posté(e)
  • Auteur
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

 

Posté(e)

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
Posté(e)
  • Auteur
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"  

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…

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.