답변:
사용하는 파일을 연결하려면
cat file1 file2 file3 ...
인용 된 파일 이름 목록을 시간순으로 정렬하려면 최신을 사용하십시오.
ls -t
함께 모아서,
cat $(ls -t) > outputfile
ls(예 :)에 몇 가지 인수를 제공 할 수 있습니다 *.html.
그러나 파일 이름에 공백이 있으면 작동하지 않습니다. My file.html는 두 개의 파일 이름 인 것으로 가정합니다 : My및 file.html. ls파일 이름 을 인용 한 다음 xargs인용을 이해하는 을 사용 하여 인수를에 전달할 수 cat있습니다.
ls -tQ | xargs cat
두 번째 질문은 파일의 일부를 필터링하는 것이 어렵지 않지만 정확히 제거하려는 항목에 따라 다릅니다. “중복 헤더”란 무엇입니까?
cat $(ls -t)또한 파일 이름 확장에 취약합니다. *, 또는 ?, 또는 괄호 표현식 (예 :) 이있는 파일 이름이있는 경우 file-[old].html; 패턴으로 해석 된 파일 이름이 다른 파일 이름과 일치하는 경우 이 접근법은 잘못된 목록을 생성합니다. set -f이 결함을 해결할 것입니다.
ls -Q에 적합하지 않은 출력을 생성 할 수 있습니다 xargs. 예를 들어, "foo"는 "\"foo\""이지만 xargs는 큰 따옴표로 묶인 문자열 내 이스케이프 된 큰 따옴표를 이해하지 못합니다.
사전 식 이외의 순서로 파일을 나열하는 가장 쉬운 방법은 zsh glob 한정자를 사용하는 것 입니다. zsh가 없으면 사용할 수 ls있지만 출력을 구문 분석하면 ls위험이 따릅니다 .
cat *(om)
일부 줄을 제거하려면 sed 또는 awk 또는 perl을 사용하십시오. 예를 들어, 및 태그가 모든 파일에서 한 줄에 있다고 가정하면 <head>첫 번째 파일에서 from 을 가져 와서 <body>다른 파일에서 부분을 결합 합니다.<body></body>
{
sed -e '/<\/body>/ q' *.html(om[2])
sed -e '1,/<body>/ d' -e '/<\/body>/,$ d' *.html(om[3,-1])
echo '</body>'
echo '</html>'
} >concatenated.html
설명:
concatenated.html작성됩니다. 따라서 *.html파일이 날짜가 없다고 가정하면 가장 어린 파일입니다.*.html파일 에서 복사 하지만 </body>줄 에서 종료하십시오 .<body>줄부터 시작 하여 줄 까지 모든 것을 건너 뜁니다 </body>.
cat $(ls -t) > outputfile, 그렇지 않으면cat인용 파일 이름을 거부합니다