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?
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:
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:
È 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
Usa un carattere jolly. In questo modo: (Se sei nella cartella)
dos2unix *
o se sei fuori dalla cartella fai:
dos2unix /path/to/folder/*
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 **/*
dos2unixsalta i binari per impostazione predefinita.