고양이 *와 고양이 * >>의 차이점


1

디렉토리에 여러 파일을 병합하려면 시도했습니다.

cat * myfile.log

그러나 이것은 단지 라인과 라인을 병합하는 것처럼 보이므로 매우 느립니다.

따라서 대신 사용하십시오.

cat * >> bigfile

여러 파일을 하나의 파일로 결합하는 것에서 파일을 훨씬 빠르게 병합합니다 .

여러 파일을 병합하는 각 버전의 차이점은 무엇입니까?


2
첫 번째 스 니펫은 콘솔에 인쇄되며, 왜 두 번째 코드와 비교하는지 궁금합니다. 전혀 같은 일을하지 않습니다.
— Mat

답변:


7

cat * myfile.log디렉토리에 CONCATENATE 모든 파일을 것입니다 (그리고이에 포함 된 두 번 이후 "myfile.log" * 그리고 당신은 그것을 이름) 화면 (표준 출력)에 인쇄 할 수 있습니다.

cat * >> bigfile디렉토리의 모든 파일을 연결하고 ( *= everything) "bigfile"이라는 파일에 추가합니다 (또는 파일이없는 경우 해당 파일에 씁니다).

(이 답변은 당신이 의미하지 않았다고 가정합니다 cat * > myfile.log)

프로세스에 걸리는 시간을 보려면 명령 앞에 접두사를 붙여 두 명령을 time비교할 수 있습니다.


4
+1 더 명확하게하기 위해 : 프로세스가 완료 될 때 파일이 여전히 디스크 캐시 (RAM)에있을 수 있으므로 콘솔로의 출력은 파일로의 출력보다 훨씬 느립니다.
— 금발 미녀

1
*쉘 옵션 이 설정되어 있지 않으면 숨겨진 디렉토리를 제외한 현재 디렉토리의 모든 파일 이름으로 확장됩니다 dotglob.
— gniourf_gniourf

그리고 다시 때문에이 *포함되어 bigfile, cat * >>bigfile온 따라 할 cat구현과 관련된 파일의 이름 크기, 아마도 루프는 무한정 복사 bigfile자체에 또는 또는 오류없이 중지합니다.
— Gilles
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.