특정 파일명 형식의 파일을 찾고, 헤더 파일을 이용하여 각 파일을 분류하고, 각 파일에 대한 결과를 원본 파일에 저장합니다. [중복]

특정 파일명 형식의 파일을 찾고, 헤더 파일을 이용하여 각 파일을 분류하고, 각 파일에 대한 결과를 원본 파일에 저장합니다. [중복]

나는 여러 개의 html 파일을 가지고 있고 header.txt와 같은 헤더 파일(적어도 몇 줄 길이)로 그것들을 (개별적으로) 분류하고 싶습니다. 나는 곧 도착할 것이다. 헤더 파일을 이용하여 각 파일을 분류하려면 다음 명령을 사용하면 되는데, 원본 파일 이름으로 저장하려면 결과를 어떻게 출력해야 할까요?

find . -iname "*.html" | xargs -L 1 cat header.txt 

xargs위 내용은 내가 원하는 것을 인쇄하지만 최종 > 원본 파일 이름을 추가하기 위해 매개변수를 어떻게 인용합니까 ?

즉, header.txt의 텍스트를 각 HTML 파일의 시작 부분에 삽입하고 싶습니다. 이를 위해 위 명령을 수정할 수 있습니까? 아니면 이것을 달성하는 다른 방법이 있습니까?


업데이트로서, 성공하지 못한 채 게시한 이후 시도한 내용은 다음과 같습니다.

find . -iname "*.html" | xargs -L 1 cat header.txt {} > {}.new

문자 그대로 이라는 이름의 파일로 인쇄된다는 점을 제외하면 괜찮습니다 {}.new. 파일은 다음과 같아야 하지만 도움이 되지 않습니다.

또한 @Dave의 제안을 시도했지만 수정할 수 없는 구문 오류가 있었습니다.

 find . -iname "*.html" -exec (cat header.txt; cat {}) > {}.new
-bash: syntax error near unexpected token `('

답변1

header.txt의 텍스트를 각 HTML 파일의 시작 부분에 삽입하고 싶습니다.

모든 HTML 파일 앞에 콘텐츠를 추가하려면 header.txt다음 oneliner를 사용하십시오.

for i in `find . -name '*.html'` ; do cat /path/to/header.txt > "$i".tmp && cat "$i" >> "$i".tmp && mv "$i".tmp "$i" ; done

콘텐츠 1.html:

first html file contents

콘텐츠 header.txt:

my header

1.html스크립트 실행 후 내용:

my header
first html file contents

(테스트해봤으나 만일의 경우를 대비해 파일을 백업해두시기 바랍니다.)

답변2

다음과 같이 while 루프를 사용할 수 있습니다.

find . -iname "*.html" | while read line; do cat header.txt "$line" > "${line}.new" ; done

관련 정보