폴더의 모든 내용에 dos2unix를 재귀 적으로 적용하는 방법은 무엇입니까?


11

dos2unix폴더와 하위 폴더의 모든 파일에 대해 명령을 실행하도록 명령 을 적용하는 방법이 있습니까? 이것을 직접적으로 만들 수 man dos2unix있는 어떤 -r옵션이나 유사한 옵션을 표시하지 않습니까?

답변:


18

find /path -type f -print0 | xargs -0 dos2unix --


2
걱정하지 마십시오 dos2unix. 기본적으로 바이너리를 건너 뜁니다.
Walf

3

바이너리와 숨겨진 파일을 건너 뛰는 것이 중요했습니다.

이것은 나를 위해 잘 작동했습니다 :

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

현재 디렉토리에서 숨겨지지 않은 모든 파일을 재귀 적으로 찾은 다음 grep을 사용하여 비어 있지 않은 모든 이진 파일 (-I)을 나열한 다음 한 번에 한 파일 씩 xargs (줄 바꿈으로 구분)로 파이프하십시오. dos2unix 및 원래 타임 스탬프를 유지하십시오.

또한보십시오:

https://github.com/mdolidon/endlines


2

find를 사용하여 dos2unix 명령을 통해 실행하려는 디렉토리 구조에서 모든 파일을 찾을 수 있습니다

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

찾기 위해 매뉴얼 페이지를 살펴보십시오. 평가 대상을 지정하는 데 사용할 수있는 많은 옵션이 있습니다


이 작동하지 않았다.
Alex Kinman

2
파일 트리 아래에 .git 디렉토리가 있으면 로컬 git 리포지토리가 손상되면이를 조심스럽게 실행하십시오.
Aaron_H

1

와일드 카드를 사용하십시오. 이처럼 : (폴더 안에 있다면)

dos2unix *

또는 폴더 외부에있는 경우 다음을 수행하십시오.

dos2unix /path/to/folder/*

1

사용 bash:

shopt -s globstar
dos2unix **

globstar에서 쉘 옵션 bash의 사용 가능 **글로브입니다. 이것은 동일하게 작동 *하지만 /경로 이름에서 일치하므로 하위 디렉토리의 이름도 일치합니다. 이것은 서브 디렉토리에 적당한 수의 파일을 포함하는 디렉토리 (1,000 개 이하)에서 작동합니다.

에서 zshyash쉘 (과 set -o extended-globyash), 당신은 할 것

dos2unix **/*
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.