Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 11-03-2012 12:16:11

Pollux
Membre
Distrib. : Squeeze
Noyau : 2.6.32
(G)UI : aucune
Inscription : 19-11-2009

[shell]test dossier vide récurssif

Bonjour,

J'ai trouvé cette discutions sur le net : http://www.debian-fr.org/question-sur-t … 34845.html

c'est très intéressant mais pas tous à fait ce que je souhaite, je vais essayez de le faire "algo" :

début
pour chaque dossier dans dossier1 faire
    si dossier est vide alors
        supprimer dossier
    fin si
fin pour chaque
fin


J'ai un peu de mal à passer cela en bash...

Hors ligne

#2 11-03-2012 12:27:35

Thuban
Modérateur
Distrib. : OpenBSD
Noyau : current
(G)UI : xfce ou dwm
Inscription : 09-01-2009
Site Web

Re : [shell]test dossier vide récurssif

for folder in $1; do
if [$(ls $folder) == ""]; then
rm -r $folder
fi
done


Ça devrait marcher à peu près... ^^

Dernière modification par Thuban (11-03-2012 12:28:03)


YA3HGA-H

Hors ligne

#3 11-03-2012 12:49:27

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : [shell]test dossier vide récurssif

Pour ton algo, considères-tu qu'un dossier contenant un sous-dossier vide est lui-même vide ou non ?

I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#4 11-03-2012 12:55:44

Thuban
Modérateur
Distrib. : OpenBSD
Noyau : current
(G)UI : xfce ou dwm
Inscription : 09-01-2009
Site Web

Re : [shell]test dossier vide récurssif

J'ai fait comme si c'était non :s

YA3HGA-H

Hors ligne

#5 11-03-2012 12:57:58

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : [shell]test dossier vide récurssif

Oh scuze, Thuban, je m'adressais à Pollux. big_smile

I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#6 11-03-2012 13:42:33

zoroastre74
Membre
Distrib. : Debian Wheezy
Noyau : Linux 3.2
(G)UI : Awesome wm v3.4.13 (Octopus)
Inscription : 28-08-2010

Re : [shell]test dossier vide récurssif

Yep!

mkdir emptyfolder
find ~/bin -empty -type d -printf "%f is EMPTY and deleted\n" -exec rmdir {} \; 2>/dev/null

>emptyfolder is EMPTY and deleted


En une ligne :

find ~/bin -empty -type d -printf "%f is EMPTY and deleted\n" -exec rmdir {} \; 2>/dev/null


find considère une option mindepth pour inclure la profondeur mini wink

Par exemple :

find ~/bin -empty -type d -mindepth 2 -printf "%f is EMPTY and deleted\n" -exec rmdir {} \; 2>/dev/null


Dans ce cas, le répertoire amont ne sera pas supprimer même si il est vide.

Si tu désires supprimer aussi le repertoire amont, la solution sera d'utiliser maxdepth.

Tu peux ainsi te créer un script du genre script.sh repertoire mindepth maxdepth

#!/bin/bash
find $1 -empty -type d -mindepth $2 -maxdepth $3 -printf "%f deleted\n" -exec rmdir {} \; 2>/dev/null


philippe@debian-k:~/bin$ emptyfolder.sh ~/bin 1 1
empty1 deleted


@+

Zoroastre.

Dernière modification par zoroastre74 (11-03-2012 14:03:49)

Hors ligne

#7 11-03-2012 14:37:04

Pollux
Membre
Distrib. : Squeeze
Noyau : 2.6.32
(G)UI : aucune
Inscription : 19-11-2009

Re : [shell]test dossier vide récurssif

Merci zoroastre !! je ne veux pas un truc aussi compliqué, en fait quand j'ai des téléchargement long ou bitorrent je les met sur mon serveur avec transmission/pyLoad et quand tu supprime un torrents/fichier depuis les interfaces web cela supprime le fichier mais si celui-ci était dans un dossier il reste, cela devient vite le bordel...

Bref, c'est super, MAIS, comme le dossier que je scan est un partage Samba/netatalk, ta tous plein de fichier caché .quelquechose, donc es que l'on pourrais passer outre (les fichiers cachés) ?

Hors ligne

#8 11-03-2012 14:40:32

cthuluh
Membre
Distrib. : stable
Noyau : stable
(G)UI : ratpoison
Inscription : 17-08-2010

Re : [shell]test dossier vide récurssif

L'utilisation de -depth peut être intéressante, afin de supprimer à coup sûr
les dossiers ne contenant que des dossiers vides.

Quant au fichiers cachés, find ne les traite pas différemment des autres.

Hors ligne

#9 11-03-2012 14:42:08

zoroastre74
Membre
Distrib. : Debian Wheezy
Noyau : Linux 3.2
(G)UI : Awesome wm v3.4.13 (Octopus)
Inscription : 28-08-2010

Re : [shell]test dossier vide récurssif

Yep!

Je ne suis pas sur de comprendre. Tu veux preserver les repertoires cachés ???

@+

Zoroastre.

Hors ligne

#10 11-03-2012 14:54:00

zoroastre74
Membre
Distrib. : Debian Wheezy
Noyau : Linux 3.2
(G)UI : Awesome wm v3.4.13 (Octopus)
Inscription : 28-08-2010

Re : [shell]test dossier vide récurssif

Yep!

Dossier caché exclu :

find ~/bin -empty -type d ! -iname ".*" -printf "%f is EMPTY and deleted\n" -exec rmdir {} \; 2>/dev/null


le ! correspond à un not (no), donc pas de repertoire (type d) commençant par "."

J'ai donc créé deux repertoires, 1 caché et 1 visible. J'applique la ligne de code plus haut. Seul le repertoire visible est supprimé wink

@+

Zoroastre.

Dernière modification par zoroastre74 (11-03-2012 14:57:13)

Hors ligne

#11 11-03-2012 20:12:34

Pollux
Membre
Distrib. : Squeeze
Noyau : 2.6.32
(G)UI : aucune
Inscription : 19-11-2009

Re : [shell]test dossier vide récurssif

en fait dans mes dossiers sensé être vide il y a des petits fichier sympa genre ".AppleDouble" (merci Mac OS). Bref, j'aimerais que lorsque qu'un dossier est "vide" (au sens si je fait un "ls" dessus je ne vois rien) il soit supprimé

dans ce cas, la commande ne devra plus contenir le "rmdir" à la fin, vu que le dossier n'est pas réellement vide.

N'empêche, je suis impressionné par les possibilité offerte par find...

A mon avis il faudra sortir de la commande find, c'est poussé mais de ce que j'ai vu dans le man, pas jusque là.

je prend un exemple parce que là...

moi@serveur~$ tree -a /home/torrents
├── MonDL
│   ├── .AppleDouble
│   │   ├── DL.mkv
│   │   ├── DL.mkv.part
│   │   └── .Parent
│   ├── DL.mkv
│   ├── DL.mkv.part


Voila à quoi ressemble un dossier lorsque je télécharge quelque chose, maintenant si je supprimer depuis mon interface web voila ce que j'ai :

moi@serveur~$ tree -a /home/torrents
├── MonDL
│   ├── .AppleDouble
│   │   ├── DL.mkv
│   │   ├── DL.mkv.part
│   │   └── .Parent


Pour moi, c'est vide, aucune donnée utile, or, on pourrait ignorer ".AppleDouble" mais j'ai parfois d'autre fichier .* qui se rajoute.

Dernière modification par Pollux (11-03-2012 20:14:24)

Hors ligne

#12 11-03-2012 20:27:09

zoroastre74
Membre
Distrib. : Debian Wheezy
Noyau : Linux 3.2
(G)UI : Awesome wm v3.4.13 (Octopus)
Inscription : 28-08-2010

Re : [shell]test dossier vide récurssif

Yep!

J'ai un peu de mal à comprendre en fait ce que tu veux réellement ???

Lorsque tu supprimes les élements sous MonDL, tu voudrais que .AppleDouble soit supprimer aussi ???

Dans ce cas là, faut uniquement faire une recherche sur les repertoires invisibles, non ???

Efface les repertoires invisibles sous ~/MonDL :

find ~/MonDL -type d -iname ".*" -printf "%f deleted\n" -exec rm -r {} \; 2>/dev/null


philippe@debian-k:~/bin/test$ tree -a ./
./
├── test1
│   └── fichier.test
└── .test1
    └── fichier.test

2 directories, 2 files

philippe@debian-k:~/bin/test$ find ./ -type d -iname ".*" -printf "%f deleted\n" -exec rm -r {} \; 2>/dev/null
./ deleted
.test1 deleted

philippe@debian-k:~/bin/test$ tree -a ./
./
└── test1
    └── fichier.test
1 directory, 1 file


@+

Zoroastre.

Dernière modification par zoroastre74 (11-03-2012 20:37:47)

Hors ligne

Pied de page des forums