2010-02-09 4 views

Antwort

21

Actual geprüfte Lösung haben:

$ find . -type f \! -path \*/\.svn/\* -exec dos2unix {} \; 
+0

danke, funktionierte ok für mich. –

-1

In bash

for fic in **/*; dos2unix $fic 

Oder noch besser in zsh

for fic in **/*(.); dos2unix $fic 
+1

Wie überspringen diese '.svn /' Verzeichnisse? –

+0

Wenn dotglob ausgeschaltet ist, werden versteckte Dateien übersprungen. Aber andere versteckte Dateien werden auch übersprungen, was meiner Meinung nach nicht das ist, was OP will. – ghostdog74

+0

Oooops, Entschuldigung! für Wurzel in {*,. *} (N); do [[$ root = .svn]] && weitermachen; für fic in $ root/**/* (.); mach dos2unix $ fic; getan ; funktioniert, aber die finden Version ist jetzt besser ... – yogsototh

1

einfach eine zusätzliche Spitze bietet: kochend das Ergebnis durch xargs statt finden die -exec Möglichkeit der Verwendung wird die Leistung zu erhöhen, wenn gehen durch eine große Verzeichnisstruktur, wenn das Filterprogramm mehrere Argumente akzeptiert, da dies die Anzahl der fork() s reduziert, also:

find <opt> | xargs dos2unix

Ein Vorbehalt: Piping durch Xargs wird schrecklich fehlschlagen, wenn alle Dateinamen Whitespace enthalten.

+2

' finden ... -print0 | xargs -0 ... 'behandelt Dateinamen mit Leerzeichen. –

-1
find . -path ./.svn -prune -o -print0 | xargs -0 -i echo dos2unix "{}" "{}" 

wenn Sie bash 4,0

shopt -s globstar 
shopt -s dotglob 
for file in /path/** 
do 
    case "$file" in 
    */.svn*)continue;; 
    esac 
    echo dos2unix $file $file 
done 
+0

Dieser scheint auch nicht zu funktionieren. –

+0

Das Ändern des Pfades ./svn in den -Pfad '* /. Svn' sollte es beheben. – Juris

+0

'-i' ist veraltet, verwenden Sie stattdessen -I {}'. Auch warum zwei "{}" '? –

2

Hier ist ein allgemeines Skript, auf dem Sie die letzte Zeile ändern kann je nach Bedarf. Ich habe die Technik von meinem findrepo Skript genommen:

repodirs=".git .svn CVS .hg .bzr _darcs" 
for dir in $repodirs; do 
    repo_ign="$repo_ign${repo_ign+" -o "}-name $dir" 
done 

find \(-type d -a \($repo_ign \) \) -prune -o \ 
    \(-type f -print0 \) | 
xargs -r0 \ 
dos2unix