최근에 Linux에서 Windows로 돌아 왔습니다. CRLF 파일, LF 파일 및 혼합 파일이 있습니다. 모든 Unix 용 파일을 찾아 적절한 CRLF 종료 파일로 변환하는 데 도움이되는 유틸리티가 있습니까?
이 유틸리티는 Linux가 아닌 Windows에서 실행해야합니다. 나는 이미 움직였다. Cygwin 을 피할 수 있다면 오히려 설치하지 않을 것입니다.
최근에 Linux에서 Windows로 돌아 왔습니다. CRLF 파일, LF 파일 및 혼합 파일이 있습니다. 모든 Unix 용 파일을 찾아 적절한 CRLF 종료 파일로 변환하는 데 도움이되는 유틸리티가 있습니까?
이 유틸리티는 Linux가 아닌 Windows에서 실행해야합니다. 나는 이미 움직였다. Cygwin 을 피할 수 있다면 오히려 설치하지 않을 것입니다.
답변:
unix2dos
Linux 플랫폼 의 유틸리티를 사용하여 변환 할 수 있습니다 . 있습니다 unix2dos
Windows 용 가능한 버전 뿐만 아니라이.
Perl을 설치 한 경우이 라이너를 사용할 수도 있습니다.
perl -p -e 's/\n/\r\n/' < UNIX_LF.txt > WINDOWS_CRLF.txt
폴더를 재귀 적으로 살펴보고 파일 필터를 허용하고 "\ r \ n"에 대한 간단한 검색을 허용하고 "\ n"으로 바꾸는 것이 메모장 + + 였습니다.
Notepad ++는 Windows를위한 최고의 무료 오픈 소스 메모장 프로그램 중 하나입니다. 매우 간단하고 강력합니다. 줄 끝 검색 / 바꾸기를 잘 처리했습니다. 계약자는 Linux \ r \ n 줄 끝을 사용하여 리포지토리에있는 .c 및 .h 파일을 검사하지만 대부분의 사람들은 Windows / Eclipse 빌드 도구를 표준화 했으므로 줄 끝이 변환 될 때까지 파일이 빌드되지 않습니다 .
Edit -> EOL Conversion
변환 할 파일 수가 적은 경우 메모장 ++에도 간단한 메뉴가 있습니다.
스위스 파일 나이프를 사용하십시오 .
예를 들어, sfk addcr -dir . -file .txt -norec
LF 엔딩을 현재 디렉토리의 모든 .txt 파일에서 Windows 용 CR / LF로 변경하지만 하위 디렉토리에는 없습니다 (재귀 없음).
그러나이 프로그램은 그 이상을 수행합니다.
-norec
재귀가 일어나기를 원하기 때문에 지정 하지는 않지만 그렇게 보이지는 않습니다.
이 솔루션을 버릴 것입니다. 힘내는이를 할 것입니다. 그것에 대해이 게시물보기
이론적으로는 전체 트리를 변환하기 위해이 작업을 수행 할 수 있습니다
cd root/of/tree
git init .
git add .
git commit -m "initial commit"
echo "* text eol=crlf" > .gitattributes
git rm --cached -r .
git reset --hard
변경 crlf
에 lf
당신이 다른 방법으로 이동합니다. 참고 : 아직 완료되지 않았습니다. 계속 읽으십시오.
git status
영향을받는 파일을 보려면 입력 하십시오. 다음과 같은 줄을 추가해야 할 수도 있습니다
*.jpg binary
*.png binary
*.gif binary
등 .gitattributes
특정 파일 변환을 피하기 위해. 특정 파일을 텍스트로 명시 적으로 표시 할 수도 있습니다
*.md text
*.css text
그런 다음 편집 후이 두 줄을 반복하십시오. .gitattributes
git rm --cached -r .
git reset --hard
그런 다음 git status
다시 사용 하여 변경 될 파일을 확인하십시오. 영향 git status
을 받으려는 모든 파일이 다음에 의해 나열되어 있다고 확신하면 커밋
git add .
git commit -m "normalize line endings"
이제 모든 파일을 다시 확인하십시오.
git rm --cached -r .
git reset --hard
이제 원하는 줄 끝이 무엇이든 있어야합니다.
** 참고 : 이미 git을 사용중인 경우 처음 3 개의 명령 git 명령을 건너 뛰십시오. git을 사용하지 않았다면 이제 .gitattributes
파일과 .git
폴더를 삭제할 수 있습니다 .
** 파일 백업 : 파일을 git rm --cached -r
삭제합니다 (이론적으로 이론적으로 git repo (.git 폴더)에 있지만 마지막 명령으로 git reset --hard
파일이 복원되는 방식 입니다. 파일이 삭제 된 직후에 파일을 백업하는 것이 가장 좋습니다. 쪽으로.
모든 파일에서 끝나는 모든 줄을 변환 할 필요는 없지만 첫 번째 줄에 전체 파일을 묶고 싶지 않은 경우 SciTE 또는 메모장 ++ 와 같은 두 줄 끝을 이해하는 텍스트 편집기를 사용 하십시오.
OL 파일을 TEXT 파일로 번역하는 방법은 여러 가지가 있으며 모두가 좋아합니다.
그러나 항상 BINARY 모드에서 Linux에서 Windows로 파일을 전송 한 다음 두 유형을 모두 열고 필요에 따라 두 형식으로 저장할 수있는 편집기를 사용하여 Windows에서 TEXT 파일을 엽니 다.
나는 이것을 위해 Programmers File Editor를 사용했지만 메모장 ++도 그렇게 할 수 있습니다. 워드 패드는 또한 [적어도 LF 종료 파일 을 보는 데] 유용합니다 .
Linux에서 시작되어 Windows의 (사실 표준) 세계에서 읽을 수있는 간단한 텍스트 파일을 생각하고 있습니다. '유닉스 터치 파일'의 의미가 무엇인지 잘 모르겠습니다.
더 많은 옵션을 제공하려면 ( user45832의 핵 답변을 가장 좋아 했지만 ) :
온라인 변환기
GUI FTP 프로그램 이 자동으로 수행 할 것 같습니다.
Batch / DOS one-liner (빈 줄 제거) :
FOR /F "eol= delims= usebackq" %a IN (infile.txt) DO (ECHO %a>> outfile.txt)
파워 쉘 :
gc infile.txt | %{$_.split("`n")} | Out-File outfile.txt
가져 오기 Windows 용 AWK를 .
유닉스 줄 끝을 Windows 줄 끝으로 변환 :
awk 'sub("$", "\r")' unixfile.txt > winfile.txt
Windows 줄 끝을 Unix 줄 끝으로 변환하십시오.
awk '{ sub("\r$", ""); print }' winfile.txt > unixfile.txt
이전 버전 awk
에는 sub
기능이 포함되어 있지 않습니다 . 이러한 경우, 동일한 명령을 사용하지만 교체 awk
와 gawk
나 nawk
.
Wikipedia 에는 cmd에 솔루션이 있습니다.
TYPE unix_file | FIND /V "" > dos_file
PowerShell에는 이 질문 에서 수행 한 작업을 반대로하여 여러 가지 방법으로이를 수행 할 수 있습니다.
(Get-Content $file -Raw).Replace("`n", "`r`n") | Set-Content $path -Force
(Get-Content $infile) -join "`r`n" > $outfile
$text = [IO.File]::ReadAllText($original_file) -replace "`n", "`r`n"
[IO.File]::WriteAllText($original_file, $text)
타사 응용 프로그램을 설치하지 않고 Windows에서 이미 사용할 수있는 도구 인 VBScript 및 JScript에서도이 작업을 수행 할 수 있습니다.