Come applicare dos2unix in modo ricorsivo a tutto il contenuto di una cartella?


11

C'è un modo per applicare il dos2unixcomando in modo che venga eseguito su tutti i file in una cartella e nelle sue sottocartelle? man dos2unixnon mostra alcuna -ro simili opzioni che lo renderebbero semplice?

Risposte:


18

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


2
Non preoccuparti, dos2unixsalta i binari per impostazione predefinita.
Walf,

3

Saltare binari e file nascosti era importante per me:

Questo ha funzionato bene per me:

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

Il che si traduce in: trova tutti i file non nascosti in modo ricorsivo nella directory corrente, quindi usa grep, elenca tutti i file non binari (-I) non vuoti, quindi esegui il pipe in xargs (delimitato da newline) un file alla volta per dos2unix e mantieni il timestamp originale.

Guarda anche:

https://github.com/mdolidon/endlines


2

È possibile utilizzare find per trovare tutti i file in una struttura di directory che si desidera eseguire tramite il comando dos2unix

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

Dai un'occhiata alle pagine man per trovare, ci sono molte opzioni che puoi usare per specificare cosa viene valutato


Questo non ha funzionato.
Alex Kinman,

2
Fai molta attenzione se esegui una directory .git in qualsiasi punto dell'albero dei file ... ha danneggiato il mio repository git locale.
Aaron_H,

1

Usa un carattere jolly. In questo modo: (Se sei nella cartella)

dos2unix *

o se sei fuori dalla cartella fai:

dos2unix /path/to/folder/*

1

Utilizzando bash:

shopt -s globstar
dos2unix **

L' globstaropzione shell in bashabilita l'uso del **glob. Funziona esattamente come, *ma /corrisponde ai nomi dei percorsi (quindi anche alla corrispondenza dei nomi nelle sottodirectory). Funzionerebbe in una directory contenente un numero moderato di file nelle sue sottodirectory (non molte migliaia).

Nelle shell zshe yash(con set -o extended-globin yash), lo faresti

dos2unix **/*
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.