Czy istnieje sposób zastosowania dos2unix
polecenia, aby działało na wszystkich plikach w folderze i jego podfolderach?
man dos2unix
nie pokazuje żadnych -r
lub podobnych opcji, które mogłyby to ułatwić?
Czy istnieje sposób zastosowania dos2unix
polecenia, aby działało na wszystkich plikach w folderze i jego podfolderach?
man dos2unix
nie pokazuje żadnych -r
lub podobnych opcji, które mogłyby to ułatwić?
Odpowiedzi:
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ż:
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
Użyj znaku wieloznacznego. W ten sposób: (jeśli jesteś w folderze)
dos2unix *
lub jeśli jesteś poza folderem:
dos2unix /path/to/folder/*
Używanie bash
:
shopt -s globstar
dos2unix **
Opcja globstar
powłoki bash
umoż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 zsh
i yash
muszli (z set -o extended-glob
, w yash
), zrobiłbyś
dos2unix **/*
dos2unix
domyślnie pomija pliki binarne.