Existe-t-il un moyen d'appliquer la dos2unix
commande afin qu'elle s'exécute sur tous les fichiers d'un dossier et de ses sous-dossiers?
man dos2unix
n'affiche aucune -r
option similaire qui rendrait cela simple?
Existe-t-il un moyen d'appliquer la dos2unix
commande afin qu'elle s'exécute sur tous les fichiers d'un dossier et de ses sous-dossiers?
man dos2unix
n'affiche aucune -r
option 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' globstar
option shell dans bash
permet 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 zsh
et yash
(avec set -o extended-glob
in yash
), vous feriez
dos2unix **/*
dos2unix
ignore les binaires par défaut.