디렉터리 내의 여러 파일을 수정해야합니다. 특정 텍스트를 포함하는 모든 파일을 수정해야하며 새로운 텍스트로 교체해야합니다.셸 스크립트가 모든 하위 디렉터리를 탐색하고 파일 내용 수정
그래서 모든 하위 디렉토리를 탐색하고 내용을 수정하는 쉘 스크립트를 작성하려고했지만 가능한 모든 디렉토리를 탐색하는 동안 문제가 발생했습니다.
디렉터리 내의 여러 파일을 수정해야합니다. 특정 텍스트를 포함하는 모든 파일을 수정해야하며 새로운 텍스트로 교체해야합니다.셸 스크립트가 모든 하위 디렉터리를 탐색하고 파일 내용 수정
그래서 모든 하위 디렉토리를 탐색하고 내용을 수정하는 쉘 스크립트를 작성하려고했지만 가능한 모든 디렉토리를 탐색하는 동안 문제가 발생했습니다.
find
을 사용하여 파일을 찾는 하위 디렉터리를 탐색 한 다음 sed
에 전달하여 텍스트를 검색하고 바꿀 수 있습니다.
find /some/directory -type f -name "*.txt" -print -exec sed -i 's/foo/bar/g' {} \;
은 모든 txt 파일을 찾아 foo를 바로 바꿉니다.
-i
은 sed가 파일을 제자리에서 변경하도록합니다. 변경되기 전에 파일을 백업하려면 sed에 backup-suffix를 제공 할 수도 있습니다.
당신은 find
을 원합니다.
for n in $(find | grep txt$)
do
echo $n
modify_content.sh $n
done
GNU
find /some_path -type f -name "*.txt" -exec sed -i 's/foo/bar/g' "{}" +;
... 및 GNU sed –
이 -print''사용할 필요가 없습니다 찾아 당신은'-name' – kurumi
에 대한 잘못된 패턴을 사용하는 당신은 할 수 있습니다 백업 파일 (이 경우'.bak' 확장자)을 만들고 싶다면'-i.bak'을 사용하십시오. – 0xC0000022L