Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Récursivité - shred

10 réponses
Avatar
cibox
Bonjour,

Comment fait-on pour utiliser la commande shred sur une arborescence.

Merci.


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

10 réponses

Avatar
François Boisson
Le Sun, 04 Nov 2007 08:01:50 -0800
a écrit:

Bonjour,

Comment fait-on pour utiliser la commande shred sur une arborescence.




$ find . -type f | xargs -n 1 shred

par exemple...

François Boisson


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
geoffroy
François Boisson a écrit :
Le Sun, 04 Nov 2007 08:01:50 -0800
a écrit:

Bonjour,

Comment fait-on pour utiliser la commande shred sur une arborescence.




$ find . -type f | xargs -n 1 shred



Y-a t'il une différence avec l'utilisation de l'option -exec de find ?
$ find . -type f -exec shred '{}' ;

j'ai du mal à appréhender les contextes propices à l'utilisation de
xargs. Peut être les deux lignes sont équivalentes dans ce cas précis.

geoffroy


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Yves Rutschle
On Mon, Nov 05, 2007 at 02:06:56PM -0800, geoffroy wrote:
> $ find . -type f | xargs -n 1 shred



Appelle 1 fois shred sur 1000 fichiers...

Y-a t'il une différence avec l'utilisation de l'option -exec de find ?
$ find . -type f -exec shred '{}' ;



Appelle 1000 fois shred sur 1 fichier...

j'ai du mal à appréhender les contextes propices à l'utilisation de
xargs. Peut être les deux lignes sont équivalentes dans ce cas précis.



C'est fonctionnellement proche (et équivalent dans ce cas
précis); la version avec xargs est plus efficace car elle
évite de démarrer un processus pour chaque fichier. Mais la
version avec -exec est parfois plus souple. Ça dépend de ce
qu'on fait.

Y.


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Sylvain Sauvage
geoffroy, lundi 5 novembre 2007, 14:06:56 CET

François Boisson a écrit :
> Le Sun, 04 Nov 2007 08:01:50 -0800
> a écrit:
>
>> Bonjour,
>>
>> Comment fait-on pour utiliser la commande shred sur une
>> arborescence.
>
>
> $ find . -type f | xargs -n 1 shred

Y-a t'il une différence avec l'utilisation de l'option -exec
de find ? $ find . -type f -exec shred '{}' ;



Pas ici.

j'ai du mal à appréhender les contextes propices à
l'utilisation de xargs. Peut être les deux lignes sont
équivalentes dans ce cas précis.



Elles sont équivalentes à cause/grâce à -n 1 : cela d it à
xargs de ne passer qu’un seul argument à shred (et donc de
créer d’autres processus pour chacun des autres fichiers).

Sans -n, xargs lance un seul processus pour tous les
arguments. C’est ce qui nous intéresse en général da ns xargs.

Exemple ridicule :
$ echo 1 2 3 4 5 6 | xargs echo
1 2 3 4 5 6

$ echo 1 2 3 4 5 6 | xargs -n 2 echo
1 2
3 4
5 6

La forme avec + de l’option -exec de find (-exec cmd {} +)
peut se comporter comme xargs (sans -n).

Note : si des espaces peuvent se glisser dans les noms de
fichiers, le plus simple est d’utiliser les options -print0
de find et -0 de xargs (le passage des noms se fait alors
par des chaînes séparées par des octets 0 plutôt que des
espaces).

--
Sylvain Sauvage
Avatar
geoffroy
Sylvain Sauvage a écrit :
geoffroy, lundi 5 novembre 2007, 14:06:56 CET
François Boisson a écrit :
Le Sun, 04 Nov 2007 08:01:50 -0800
a écrit:

Bonjour,

Comment fait-on pour utiliser la commande shred sur une
arborescence.



$ find . -type f | xargs -n 1 shred


Y-a t'il une différence avec l'utilisation de l'option -exec
de find ? $ find . -type f -exec shred '{}' ;



Pas ici.


[...]
merci Yves et Sylvain pour vos explications :)
geoffroy


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Jacques L'helgoualc'h
Sylvain Sauvage a écrit, mardi 6 novembre 2007, à 00:19 :
[...]
Sans -n, xargs lance un seul processus pour tous les
arguments.



Pas tout à fait : xargs découpe la suite des arguments en paquets selon
les limitations du shell :

$ echo {1..123456} | xargs echo | sed -e 's/ .* / ... /'
1 ... 23042
23043 ... 44233
44234 ... 65424
65425 ... 86615
86616 ... 106690
106691 ... 123456

Bon, on voit que les paquets sont assez gros...
--
Jacques L'helgoualc'h


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Sylvain Sauvage
Jacques L'helgoualc'h, mardi 6 novembre 2007, 10:03:43 CET

Sylvain Sauvage a écrit, mardi 6 novembre 2007, à 00:19 :
[...]
> Sans -n, xargs lance un seul processus pour tous les
> arguments.

Pas tout à fait : xargs découpe la suite des arguments en
paquets selon les limitations du shell :



Pas tout à fait ;o) : xargs découpe la suite des arguments
en paquets selon la valeur de l’option -s (nombre de caractères
de la ligne), laquelle est par défaut 131072, y compris les
variables d’environnement, donc, en pratique, les limitations
du shell (mais parce que ce sont celles du noyau).

--
Sylvain Sauvage
Avatar
Jacques L'helgoualc'h
Sylvain Sauvage a écrit, mardi 6 novembre 2007, à 12:13 :
[...]
Pas tout à fait ;o) : xargs découpe la suite des arguments
en paquets selon la valeur de l???option -s (nombre de caractères
de la ligne), laquelle est par défaut 131072, y compris les
variables d???environnement, donc, en pratique, les limitations
du shell (mais parce que ce sont celles du noyau).



OK, merci.

$ echo {1..123456} | xargs echo | while read f;do echo $f | wc;done
1 23042 127146
1 21191 127146
1 21191 127146
1 21191 127146
1 20075 127141
1 16766 117362

$ env|wc
52 74 1871

La commande « env » ne donne pas tout, ou il y a autre chose qui
explique la différence entre 131072 et 127146 ?
--
Jacques L'helgoualc'h


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Sylvain Sauvage
Jacques L'helgoualc'h, mardi 6 novembre 2007, 12:49:12 CET

Sylvain Sauvage a écrit, mardi 6 novembre 2007, à 12:13 :
[...]
> Pas tout à fait ;o) : xargs découpe la suite des arguments
> en paquets selon la valeur de l???option -s (nombre de
> caractères de la ligne), laquelle est par défaut 131072, y
> compris les variables d???environnement, donc, en pratique,
> les limitations du shell (mais parce que ce sont celles du
> noyau).

OK, merci.

$ echo {1..123456} | xargs echo | while read f;do echo $f |
wc;done 1 23042 127146
1 21191 127146
1 21191 127146
1 21191 127146
1 20075 127141
1 16766 117362

$ env|wc
52 74 1871

La commande « env » ne donne pas tout, ou il y a autr e chose
qui explique la différence entre 131072 et 127146 ?



Et bien, pour le echo, wc ne compte pas exactement la taille
des chaînes, il compte les chiffres et les espaces les séparant.
Ça ne doit pas être loin du compte : il manque juste «  echo »
lui-même.

Quant à env, cette commande affiche les variables sous la
forme VAR=VALEUR. Ça tombe bien parce que la variable qui doit
contenir tout ça est un bête tableau de chaînes «  VAR=VALEUR ».

On pourrait aussi compter l’empreinte mémoire de la structure
de ce « dictionnaire » et donc ajouter sizeof(char*)*52.
Mais en fait, non¹.

Avec ça, on se rapproche un peu : 127146 (args) + 5 (echo) +
1871 (env) = 129022.

Ensuite, POSIX.2 demande à ce que l’on conserve un marge de
2048 octets¹.

¹ : j’ai triché : j’ai regardé les sources d e xargs…

Et donc : 129022 + 2048, ça fait 131070.

Il manque encore 2. Or, d’après les sources toujours, il faut
les enlever pour Linux/PPC (mais je ne sais pas pourquoi).

Bon, on a du bol que ça tombe juste : 127146 est une borne
inférieure pour ton environnement. En effet, il pourrait rester
un peu de place pour un autre argument car, à ce moment-là, tes
arguments font déjà au moins 5 caractères (> 23042 ; ça fait 6
avec le séparateur).

Et voilà.
--
Sylvain Sauvage
Avatar
Jacques L'helgoualc'h
Sylvain Sauvage a écrit, mardi 6 novembre 2007, à 17:13 :
[...]
Ensuite, POSIX.2 demande à ce que l???on conserve un marge de
2048 octets¹.



Ah, voilà ! Je me demandais si autre chose que la sortie de « env »
pouvait être transmis...

[...]
Il manque encore 2. Or, d???après les sources toujours, il faut
les enlever pour Linux/PPC



Quel gâchis :)

[...]
Et voilà.



Merci !
--
Jacques L'helgoualc'h


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact