![sed 명령을 사용하여 텍스트 파일을 디렉터리 이름으로 바꿉니다.](https://linux55.com/image/171046/sed%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%85%8D%EC%8A%A4%ED%8A%B8%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%20%EC%9D%B4%EB%A6%84%EC%9C%BC%EB%A1%9C%20%EB%B0%94%EA%BF%89%EB%8B%88%EB%8B%A4..png)
내 디렉토리 구조는 다음과 같습니다.
Folder1/
|____file.txt
Folder2/
|____file.txt
Folder3/
|____file.txt
:
Foldern/
|____file.txt
디렉토리의 각 .txt 파일에는 디렉토리 이름으로 바꾸고 싶은 단어가 있습니다.
파일.txt:
"name": "Engineering",
"Engineering"이라는 단어를 "Folder1"과 같은 디렉토리 이름으로 바꾸고 싶습니다.
"name": "Folder1"
나의 초기 시도는 다음과 같습니다.
for f in Folder*; do (cd $f; echo $f; sed -i -e "s/Engineering/Folder*/" file.txt); done
그러나 sed 명령은 Folder*
폴더 번호를 보지 못하는 것 같습니다.
답변1
cd
디렉토리에 들어갈 필요가 없습니다 . 파일 경로를 반복하고 폴더 이름을 추출할 수 있습니다.
for file in Folder*/file.txt; do
sed -i -e "s/Engineering/${file%%/*}/" "$file"
done
매개변수 확장은 ${file%%/*}
가장 긴 접미사를 제거 /*
하고 폴더 이름을 유지합니다.