2011-01-10 4 views
2

파일의 일부 문자열을 다른 것으로 대체해야합니다. 단일 파일로 그 작업을 수행하는 방법을 알고 있습니다 : sed -i 's/a/b/'. 재귀 함수는? 어떻게 든 xargs와 함께 find . -name *을 사용해야한다고 생각합니다. 리눅스에서 sed를 호출하십시오.

나는

답변

8

당신이 올바른지, findxargs 사용하려는 무엇을 당신의 도움이 :)이 필요합니다. 다음은 현재 폴더와 모든 하위 폴더에있는 ".ext"파일 확장자를 가진 모든 파일을 찾아서 a을 파일의 b으로 바꾸는 예제입니다.

find . -name "*.ext" | xargs sed -i 's/a/b/g' 
+0

'sed를 편집 할 수 있습니다 :.이 아닌 일반 파일 나오지 : ./.git/objects/68 편집 할 수 있습니다 : 나는 일부를 CHAGE하기 위해 노력하고있어 – Ockonal

+0

하지 정기적 file'을 내 git repo. 그리고 나는 그 오류를 얻는다. – Ockonal

+2

찾기에서 "* .ext"대신 무엇을 사용하고 있습니까? 디렉토리가 "*"인 경우 sed는 작동하지 않습니다. find 명령에 "-type f"를 추가하여 일반 파일 만 가져옵니다. –