[RÉSOLU] Script à améliorer

Bonjour,

Voici un script pourri qui appelle 60 000 fois la foncttion chmod :ane:

find /media/autres/ -type d -exec chmod 744 '{}' \;
find /media/audio_video/ -type d -exec chmod 744 '{}' \;
find /media/vmware/ -type d -exec chmod 744 '{}' \;
find /media/documents/ -type d -exec chmod 744 '{}' \;
find /media/gros_docs/ -type d -exec chmod 744 '{}' \;

find /media/autres/ -type f -exec chmod 644 '{}' \;
find /media/audio_video/ -type f -exec chmod 644 '{}' \;
find /media/vmware/ -type f -exec chmod 644 '{}' \;
find /media/documents/ -type f -exec chmod 644 '{}' \;
find /media/gros_docs/ -type f -exec chmod 644 '{}' \;

Comme l’améliorer ?

J’ai essayer

find /media/autres/ -type f | xargs -n 500 chmod 644

Mais j’ai des fichiers et dossiers avec espaces donc ça ne fonctionne pas…

Y a une option pour find pour qu’il sépare les résultats par des \0 au lieu de retours chariot, et une pour xargs pour qu’il utilise \0 comme sépérateur de résultats au lieu des retours.
Cf. man :slight_smile:

#!/bin/bash
echo 'Application des droits en cours...'

chown fabrice.fabrice -R /media/autres/ /media/audio_video/ /media/vmware/ /media/documents/ /media/gros_docs/ /var/www/

find /media/vmware/ -print0 -type f | xargs -0 -n 1000 chmod 644
find /media/vmware/ -print0 -type d | xargs -0 -n 1000 chmod 744

find /media/documents/ -print0 -type f | xargs -0 -n 1000 chmod 644
find /media/documents/ -print0 -type d | xargs -0 -n 1000 chmod 744

find /media/audio_video/ -print0 -type f | xargs -0 -n 1000 chmod 644
find /media/audio_video/ -print0 -type d | xargs -0 -n 1000 chmod 744

find /media/gros_docs/ -print0 -type f | xargs -0 -n 1000 chmod 644
find /media/gros_docs/ -print0 -type d | xargs -0 -n 1000 chmod 744

find /media/autres/ -print0 -type f | xargs -0 -n 1000 chmod 644
find /media/autres/ -print0 -type d | xargs -0 -n 1000 chmod 744

chmod 744 -R /media/documents/scripts/
chmod 755 -R /var/www/

Voilà qui est beaucoup mieux.

En relisant le man de xargs j’ai vu

Je rêve, la réponse est devant mon nez mais je l’avais même pas vu. :ane:

Merci.