Fonction groupée sur des fichiers avec espaces

Photo de Patrick Perkins

Qui n’a jamais eu de problème, en utilisant récursivement des fonctions comme chmod ou chown, lorsque les noms de fichiers comprennent des espaces ?

Par exemple, je crée un dossier et un fichier, dont le nom comprend un espace :

dr-xr-xr-x  2 1000 1000 4,0K oct.  10 14:47 test dossier
-r--r--r--  1 1000 1000    0 oct.  10 14:47 test fichier

La fonction suivante va buter sur ces derniers, et le fait savoir :

postit@cibles ~ $ find * -type d | xargs chmod 755
chmod: impossible d'accéder à 'test': Aucun fichier ou dossier de ce type
chmod: impossible d'accéder à 'dossier': Aucun fichier ou dossier de ce type
postit@cibles ~ $ find * -type f | xargs chmod 644
chmod: impossible d'accéder à 'test': Aucun fichier ou dossier de ce type
chmod: impossible d'accéder à 'fichier': Aucun fichier ou dossier de ce type

Le script va essayer de modifier les droits de « test », « dossier », « test » et « fichier », considérant les espaces comme des séparations entre noms de fichiers.

Pour régler le problème, on utilisera donc la fonction suivante :

find * -type d -exec chmod 755 {} \;
find * -type f -exec chmod 644 {} \;

Et ça marche aussi avec chown :

find * -exec chown titi:toto {} \;



Cibles

Une agence web high-tech et low-cost à votre service depuis 2008 : www.cibles.fr. Nous créons des sites sur-mesure au prix du prêt-à-porter, avec le professionnalisme, la proximité et la disponibilité d'une petite structure.

Aucun commentaire


Soyez le premier à commenter :)



Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *