Existe-t-il un moyen d'appliquer la dos2unixcommande afin qu'elle s'exécute sur tous les fichiers d'un dossier et de ses sous-dossiers?
man dos2unixn'affiche aucune -roption similaire qui rendrait cela simple?
Existe-t-il un moyen d'appliquer la dos2unixcommande afin qu'elle s'exécute sur tous les fichiers d'un dossier et de ses sous-dossiers?
man dos2unixn'affiche aucune -roption similaire qui rendrait cela simple?
Réponses:
Ignorer les binaires et les fichiers 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
Cela se traduit par: rechercher tous les fichiers non masqués de manière récursive dans le répertoire courant, puis en utilisant grep, lister tous les fichiers non vides (-I) non binaires, puis les rediriger en xargs (délimités par des sauts de ligne) un fichier à la fois pour dos2unix et conservez l'horodatage d'origine.
Voir également:
Vous pouvez utiliser find pour rechercher tous les fichiers dans une structure de répertoires que vous souhaitez exécuter via votre commande dos2unix
find /path/to/the/files -type f -exec dos2unix {} \;
Jetez un œil aux pages de manuel pour trouver, il y a beaucoup d'options que vous pouvez utiliser pour spécifier ce qui sera évalué
Utilisez un caractère générique. Comme ceci: (Si vous êtes dans le dossier)
dos2unix *
ou si vous êtes en dehors du dossier, faites:
dos2unix /path/to/folder/*
En utilisant bash:
shopt -s globstar
dos2unix **
L' globstaroption shell dans bashpermet d'utiliser le **glob. Cela fonctionne exactement comme *mais correspond à travers /dans les chemins d'accès (d'où la correspondance des noms dans les sous-répertoires aussi). Cela fonctionnerait dans un répertoire contenant un nombre modéré de fichiers dans ses sous-répertoires (pas plusieurs milliers).
Dans les coquilles zshet yash(avec set -o extended-globin yash), vous feriez
dos2unix **/*
dos2unixignore les binaires par défaut.