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


11

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:


18

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


2
Ne vous inquiétez pas, dos2unixignore les binaires par défaut.
Walf

3

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:

https://github.com/mdolidon/endlines


2

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é


Ça n'a pas marché.
Alex Kinman

2
Soyez très prudent en exécutant cela s'il y a un répertoire .git n'importe où dans l'arborescence des fichiers ... cela a corrompu mon référentiel git local.
Aaron_H

1

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/*

1

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 **/*
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.