파일 자체의 특정 텍스트를 사용하여 파일 이름의 시작 부분 이름을 바꿉니다.

파일 자체의 특정 텍스트를 사용하여 파일 이름의 시작 부분 이름을 바꿉니다.

내 디렉토리에 많은 파일이 있습니다( file1.txt, file2.txt, ...)

각 파일에는 여러 줄이 포함되어 있습니다. 줄 중 하나는 특정 텍스트 와 thetext같은 임의의 숫자가 뒤따르는 것 입니다 thetext56.thetext21

파일 자체의 특정 텍스트를 사용하여 파일 이름의 시작 부분의 이름을 바꾸고 싶습니다. 그래서, file1.txt될 것입니다 thetextXXfile1.txt, file2.txt될 것입니다 thetextXXfile2.txt등입니다.

처음에 추가된 addtext간단한 이름 바꾸기 명령은 다음과 같습니다.

rename 's?^?addtext?' *.html

파일에서 특정 텍스트를 가져올 때

sed '/thetext/!d' *.html

하지만 그것들을 결합하는 방법을 모르겠습니다.

답변1

일치 항목을 기반으로 파일에서 한 줄을 읽는 것이 전부일 때 grep더 나은 도구로 이것을 권장합니다. 아래 루프 구조를 sed교체하셔도 됩니다 . grep이 첫 번째 일치 항목만 찾도록 sed이 옵션도 사용했습니다 .-m 1

for file in *.html; do
   text="$(grep -m 1 "thetext" "$file")"
   rename "s?$text?" "$file"
done

관련 정보