일치하는 모든 파일에 sed를 사용하는 방법은 무엇입니까?

일치하는 모든 파일에 sed를 사용하는 방법은 무엇입니까?

출력에서 sed를 실행하려고 합니다. find | grep \.ext$
그러나 sed에는 입력 파일과 출력 파일이 필요합니다.
출력 줄을 변수에 저장하거나 sed에 전달하려면 어떻게 해야 합니까?

답변1

사실도 아니고 sed그렇지도 않아요필요하다입력 파일.

Sed는 입력 스트림(파일)에서 기본 텍스트 변환을 수행하는 데 사용되는 스트림 편집기입니다.또는 파이프에서 입력). (통과하다)

그러나 귀하의 경우에는 스트림이 아닌 파일에서 작업하기를 원하므로 필요합니다.


여기서는 이것이 필요하지 않습니다 . 그런 다음 발견된 모든 파일에 대해 실행 하려면 발견된 모든 파일에 대해 실행 명령을 사용 grep하십시오 .find -name "*.ext"sedfind -exec

find -name "*.ext" -exec sed -i '...' {} \;

어떤 이유로든 의 파일 이름을 사용하려는 경우 grep(예: 입력이 의 파일 이름이 아닌 경우 find) 다음을 사용할 수 있습니다 xargs.

grep \.ext$ list_of_files | xargs -I{} sed -i '...' {}

답변2

sed여러 입력 파일과 함께 사용할 수 있습니다 .

sed 'what/you/wanna/do' file1 file2 file3
sed 'what/you/wanna/do' file*
sed 'what/you/wanna/do' *.txt
sed 'what/you/wanna/do' $(find | grep \.ext)

표준 출력으로 인쇄하는 대신 변경 사항을 저장하려면 옵션 -i(내부)을 사용하십시오.

sed -i 'what/you/wanna/do' $(find | grep \.ext)

관련 정보