Comment appliquer dos2unix récursivement à tout le contenu d'un dossier?

Existe-t-il un moyen d'appliquer la command dos2unix pour qu'elle s'exécute sur tous les files d'un dossier et que ce soit des sous-dossiers? man dos2unix ne montre aucune option -r ou similaire qui rendrait cela simple?

find /path -type f -print0 | xargs -0 dos2unix --

Vous pouvez utiliser find pour find tous les files d'une structure de directorys que vous voulez exécuter via votre command dos2unix

 find /path/to/the/files -type f -exec dos2unix {} \; 

Jetez un coup d'oeil aux pages man pour find, il y a beaucoup d'options que vous pouvez utiliser pour spécifier ce qui est évalué

Le fait de sauter des files binarys et des files cachés était important pour moi:

Celui-ci a bien fonctionné pour moi:

 find . -type f -not -path '*/\.*' -exec grep -Il '.' {} \; | xargs -d '\n' -L 1 dos2unix -k 

Ce qui se traduit par: find tous les files non-cachés récursivement dans le directory courant, puis utiliser grep, listr tous les files non-binarys (-I) non-vides, puis les placer dans xargs (délimité par des newlines) un file à la fois dos2unix et garder l'horodatage d'origine.

Voir également:

https://github.com/mdolidon/endlines

J'espère que cela pourra aider.

Utilisez un caractère générique. Comme ceci: (Si vous êtes dans le dossier)

 dos2unix * 

ou si vous êtes en dehors du dossier faire:

 dos2unix /path/to/folder/*