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


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.