파일 내용을 사용하여 파일 이름 바꾸기

파일 내용을 사용하여 파일 이름 바꾸기

그래서 나는 가지고있다여러 개의 텍스트 파일을 다운로드했습니다.이 파일의 이름을 제목으로 바꾸고 싶습니다.이 파일에는 무엇이 포함되어 있나요?.

출력은 head sn-800.txt다음과 같습니다

깁슨 리서치 코퍼레이션 https://www.GRC.com/

시리즈: 이제 안전해요!
에피소드: #800
날짜: 2021년 1월 5일
제목: Sun Blizzard
호스트: Steve Gibson 및 Leo Laporte
출처: https://media.grc.com/sn/sn-800.mp3
아카이브: https://www.grc.com/securitynow.htm

간단히 sn-800.txt말해서 ,sn-800 - SolarBlizzard.txt

335개 파일 에 도달할 mv때까지 화면의 모든 내용을 표시합니다 .

#!/bin/bash
for iEpisode in {802..807}; 
do 
  echo -n "sn-$iEpisode - ";
  grep "^TITLE:" sn-"$iEpisode".txt | 
  cut -d":" -f2 | 
  sed 's/\t//g' | 
  tr -d '\n';  
  echo ".txt";  
done

하지만 끝 부분(위의 `tr)에서 개행 문자를 제거하는 방법을 알아낼 수 없는 것 같습니다. 다음과 같습니다.

.txt02 - Where the Plaintext Is
.txt03 - Comparative Smartphone Security
.txt04 - NAT Slipstreaming 2.0
.txt05 - SCADA Scandal
.txt06 - C.O.M.B.
sn-807 - Dependency Confusion.txt

어떤 이유로든 마지막 파일은 정확하지만 이전 파일의 어딘가에 여전히 개행 문자가 있습니까? ? ? ( -n마지막 파일에 대해 작업을 수행 하면 echo모든 파일 이름이 하나의 문자열로 연결됩니다.)

내가 뭘 잘못했나요? ? ?

답변1

이러한 파일에는 CR/LF 줄 끝이 있으므로 해당 파일도 제거해야 합니다 \r.

...
tr -d '\r\n';
...

이것이 각 줄의 시작 부분에 나타나는 이유입니다. .txt끝 부분에 출력되지만 커서가 줄의 시작 부분으로 돌아온 후에입니다.

관련 정보