Jak zastosować rekursywnie dos2unix do całej zawartości folderu?


11

Czy istnieje sposób zastosowania dos2unixpolecenia, aby działało na wszystkich plikach w folderze i jego podfolderach? man dos2unixnie pokazuje żadnych -rlub podobnych opcji, które mogłyby to ułatwić?

Odpowiedzi:



3

Pomijanie plików binarnych i ukrytych plików było dla mnie ważne:

Ten działał dla mnie dobrze:

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

Co przekłada się na: znajdowanie rekursywnie wszystkich nie ukrytych plików w bieżącym katalogu, a następnie za pomocą grep, wyświetlenie listy wszystkich niepustych (-I) niepustych plików, a następnie potokowanie go do xargs (rozdzielonych znakami nowej linii) po jednym pliku, aby dos2unix i zachowaj oryginalny znacznik czasu.

Zobacz też:

https://github.com/mdolidon/endlines


2

Za pomocą polecenia find można znaleźć wszystkie pliki w strukturze katalogów, które chcesz uruchomić za pomocą polecenia dos2unix

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

Spójrz na strony podręcznika dla find, istnieje wiele opcji, których możesz użyć, aby określić, co zostanie ocenione


To nie zadziałało.
Alex Kinman

2
Zachowaj BARDZO ostrożność, uruchamiając to, jeśli gdziekolwiek w drzewie plików jest katalog .git ... to uszkodziło moje lokalne repozytorium git.
Aaron_H

1

Użyj znaku wieloznacznego. W ten sposób: (jeśli jesteś w folderze)

dos2unix *

lub jeśli jesteś poza folderem:

dos2unix /path/to/folder/*

1

Używanie bash:

shopt -s globstar
dos2unix **

Opcja globstarpowłoki bashumożliwia użycie **globu. Działa to tak samo, *ale pasuje /do nazw ścieżek (stąd też dopasowuje nazwy w podkatalogach). To działałoby w katalogu zawierającym umiarkowaną liczbę plików w jego podkatalogach (niewiele tysięcy).

W zshi yashmuszli (z set -o extended-glob, w yash), zrobiłbyś

dos2unix **/*
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.