sed 명령을 사용하여 텍스트 파일을 디렉터리 이름으로 바꾸기

sed 명령을 사용하여 텍스트 파일을 디렉터리 이름으로 바꾸기

나는 아래와 같은 디렉토리 구조를 가지고 있습니다 :

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%%/*}가장 긴 접미사를 제거 /*하고 폴더 이름을 그대로 둡니다.

관련 정보