내 디렉토리에 많은 파일이 있습니다( 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