디렉토리와 서브 디렉토리에있는 모든 파일의 모든 EOL (dos-> unix)를 재귀 적으로 변환하려면 dos2unix
? (나는 그것을 가지고 그것을 설치할 수 없습니다.)디렉토리와 하위 디렉토리에있는 모든 파일의 모든 EOL (dos-> unix)를 dos2unix없이 재귀 적으로 변환
tr -d '\r'
과 파이프를 사용하는 방법이 있습니까? 그렇다면 어떻게?
디렉토리와 서브 디렉토리에있는 모든 파일의 모든 EOL (dos-> unix)를 재귀 적으로 변환하려면 dos2unix
? (나는 그것을 가지고 그것을 설치할 수 없습니다.)디렉토리와 하위 디렉토리에있는 모든 파일의 모든 EOL (dos-> unix)를 dos2unix없이 재귀 적으로 변환
tr -d '\r'
과 파이프를 사용하는 방법이 있습니까? 그렇다면 어떻게?
당신의에게 자리에서 파일을 변경하는 -i
플래그를 나오지도 사용할 수 있습니다
find . -type f -exec sed -i 's/\x0d//g' {} \+
내가 당신이라면,이 작업이 괜찮 갔다 확인하기 위해 주위에 파일을 보관합니다. 그런 다음 임시 파일을 삭제할 수 있습니다. 다음과 같이 수행 할 수 있습니다.
find . -type f -exec sed -i'.OLD' 's/\x0d//g' {} \+
find . -type f -name '*.OLD' -delete
공백없이 파일 이름 및 디렉토리 이름이 있습니까?
그렇다면 너무 어렵지 않습니다. 줄 바꾸기와 공백을 포함하는 임의의 이름을 처리해야한다면, 이보다 더 열심히해야합니다.
tmp=${TMPDIR:-/tmp}/crlf.$$
trap "rm -f $tmp.?; exit 1" 0 1 2 3 13 15
find . -type f -print |
while read name
do
tr -d '\015' < $name > $tmp.1
mv $tmp.1 $name
done
rm -f $tmp.?
trap 0
exit 0
트랩 구성 요소를 사용하면 임시 파일이 남지 않도록 할 수 있습니다. 임시 파일 이름에 임의의 이름을 사용하여 끌어낼 수있는 다른 트릭이 있습니다. 적대적인 환경에서 일하지 않는다면 보통 필요하지 않습니다. 당신이 펄 한 라이너와 함께 할 수있는 현재 디렉토리에있는 모든 파일의 경우
'tr'은 실제로'\ r' (BSD와 GNU 변형 모두)을 인식하므로'tr -d '\ r "을 사용할 수 있습니다. –
편집기를 배치 모드로 사용할 수도 있습니다. \r
만약
find . -type f -exec bash -c 'echo -ne "%s/\\\r//\nx\n" | ex "{}" ' \;
이 솔루션은 Mac OS X에서 저에게 잘 돌아간 유일한 해결책이었습니다. 다른 사람들은 'inplace do not inplace : ./lang은 일반 파일이 아니며, <> 22167 줄>과 같은 다양한 문제에 매달렸습니다. – WilliamKF
은 (팀 Pote의 파일에 어쩌면 경우) \n
다음되지 않습니다
\n
와 \r
를 대체 줄 바꿈을 제거 할 수있다 (tr -d
사용) \r
을 삭제하지 않을 수 있습니다 더블/트리플 뉴 라인을 야기한다.어쩌면 Tim Pote가 언급 한 파일에 대해 위의 사항을 확인할 수 있습니다.
팀 포테 (Tim Pote)의 답변에 대한 좋은 코멘트로 보입니다. 그러나 실제로 질문에 대한 답변에 대해서는 분명하지 않습니다. –
공백이 포함 된 파일 이름을 처리해야합니다. 각 라인의 끝 부분에 개행을 추가하지 않으면 파일이 이중 간격 또는 3 중 간격이됩니다 (캐리지 리턴을 개행으로 바꾸므로). 예, 방금 테스트했습니다. –
@DennisWilliamson 나는 두 번 생각조차하지 않고 사무실에있는 스크립트에서 방금 그걸 잡아 당겼다. 이제 그 스크립트가 어떻게 작동하는지 궁금합니다. (Mac 용 Microsoft Office에서 작성된 파일을 변환하기위한 것이라는 사실과 관련이있을 수 있습니다.) 새 버전이 제대로 작동해야합니다. –