![특정 파일명 형식의 파일을 찾고, 헤더 파일을 이용하여 각 파일을 분류하고, 각 파일에 대한 결과를 원본 파일에 저장합니다. [중복]](https://linux55.com/image/76116/%ED%8A%B9%EC%A0%95%20%ED%8C%8C%EC%9D%BC%EB%AA%85%20%ED%98%95%EC%8B%9D%EC%9D%98%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%B0%BE%EA%B3%A0%2C%20%ED%97%A4%EB%8D%94%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC%20%EA%B0%81%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%B6%84%EB%A5%98%ED%95%98%EA%B3%A0%2C%20%EA%B0%81%20%ED%8C%8C%EC%9D%BC%EC%97%90%20%EB%8C%80%ED%95%9C%20%EA%B2%B0%EA%B3%BC%EB%A5%BC%20%EC%9B%90%EB%B3%B8%20%ED%8C%8C%EC%9D%BC%EC%97%90%20%EC%A0%80%EC%9E%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%20%5B%EC%A4%91%EB%B3%B5%5D.png)
나는 여러 개의 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