를 사용하여 전체 디렉토리를 변환해야합니다 dos2unix
. 이 작업을 수행하는 방법을 알 수 없습니다.
답변
find . -type f -print0 | xargs -0 dos2unix
재귀 적으로 현재 디렉토리 내의 모든 파일을 찾고이 파일을 호출합니다. dos2unix 명령
답변
큰 디렉토리 인 경우 여러 프로세서로 실행하는 것이 좋습니다.
find . -type f -print0 | xargs -0 -n 1 -P 4 dos2unix
한 번에 1 개의 파일을 전달하고 4 개의 프로세서를 사용합니다.
답변
dos2unix가 만족스럽지 않으면 서 간단한 유틸리티를 공개했습니다. 속도와 예측 가능성의 몇 가지 장점 외에도 구문은 약간 더 간단합니다.
endlines unix *
그리고 하위 디렉토리로 이동하려면 (숨겨진 디렉토리 및 텍스트가 아닌 파일을 생략하십시오) :
endlines unix -r .
endlines
https://github.com/mdolidon/endlines에서 사용할 수 있습니다
답변
이 같은 숨김 파일 및 폴더 건너 아마 가장 좋은 .git.
사용하는 대신 그래서를 find
귀하의 경우, bash
버전이 최근 충분히이 발생하거나 사용하는 경우 zsh
, 단지 수행
dos2unix **
Bash의 경우 다음이 필요합니다.
shopt -s globstar
…. 그러나 이것은 당신이 솔직히 말해서 유용하게 사용할 수있는 충분한 기능입니다 .bashrc
.
당신이 경우 하지 않는 숨김 파일 및 폴더를 제외하려면,하지만 여전히 건드리고 싶지 않아 find
(내가 당신을 비난하지 않을), 당신은 일치하는 두 번째 재귀 글로브 인수 제공 할 수있는 유일한 숨겨진 항목 :
dos2unix ** **/.*
두 경우 모두 glob가 디렉토리를 포함하도록 확장되므로 다음과 같은 경고가 나타날 수 있습니다 (잠재적으로 여러 번). Skipping <dir>, not a regular file.
답변
일반적인 사용 사례 는 Git 저장소에 커밋 된 모든 파일의 줄 끝 을 표준화 하는 것으로 보입니다 .
git ls-files | xargs dos2unix
특정 파일 (예를 들어 있다는 사실을 숙지 *.sln
, *.bat
) 등 있습니다 만 의 Windows 운영 체제에서 사용한다 계속CRLF
종료를 :
git ls-files '*.sln' '*.bat' | xargs unix2dos
필요한 경우 .gitattributes
답변
모든 Solaris 사용자의 경우 (오전 5.10을 사용중인 경우, 다른 유닉스 시스템뿐만 아니라 최신 버전에도 적용될 수 있음) :
dos2unix는 기본적으로 파일을 덮어 쓰지 않고 업데이트 된 버전을 stdout으로 인쇄하기 때문에 소스와 대상을 같은 이름으로 두 번 지정해야합니다.
find . -type f -exec dos2unix {} {} \;
답변
for FILE in /var/www/html/files/*
do
/usr/bin/dos2unix FILE
done
