저는 UNIX 매니아는 아니지만 여기 저기 작은 스크립트를 작성할 만큼 UNIX를 잘 이해하고 있습니다. 다만 이 부분은 개인적으로 시간을 충분히 할애하지 못할 수도 있습니다.
내 디렉토리에 약 2000개의 파일이 있으며 다음을 수행해야 합니다.
- 파일당 약 3000개의 레코드가 있지만 모든 레코드는 Ctrl M 개행으로 구분되어 파일당 한 줄에 있습니다. 이것들은 분리되어야 합니다.
- 각 파일에는 첫 번째 줄의 문자 8~14부터 시작하는 해당 생성 날짜가 있습니다. 이 날짜를 사용하여 파일 이름을 XXX_YYYYMMDD_AAA.txt로 바꿔야 합니다.
답변1
dos2unix
대부분의 시스템에는 이 작업을 수행하는 데 필요한 파일을 처리하기 위해 스크립트에서 "gin up"할 수 있는 "gin up"이라는 도구가 포함되어 있습니다 .
파일이 모두 디렉터리에 있는 경우 find
다음과 같이 이를 사용하여 파일을 찾은 다음 각 파일에 대해 개별적으로 작업할 수 있습니다.
$ find . -type f -exec dos2unix {} +
예
이 디렉토리 구조가 있다고 가정 해 봅시다
$ tree
.
|-- afile
|-- dir1
| `-- afile
`-- dir2
`-- afile
우리는 우리의 find
기술을 사용하여 모든 파일이 CRLF 줄 종결자가 있는 "DOS" 파일인지 확인할 수 있습니다.
$ find . -type f -exec file {} +
./dir2/afile: ASCII text, with CRLF line terminators
./afile: ASCII text, with CRLF line terminators
./dir1/afile: ASCII text, with CRLF line terminators
다음과 같이 모든 것을 수정하십시오.
$ find . -type f -exec dos2unix {} +
dos2unix: converting file ./dir2/afile to Unix format ...
dos2unix: converting file ./afile to Unix format ...
dos2unix: converting file ./dir1/afile to Unix format ...
Unix 파일만 생성:
$ find . -type f -exec file {} +
./dir2/afile: ASCII text
./afile: ASCII text
./dir1/afile: ASCII text