|wc가 3개의 단일 라인 파일을 포함하는 dir에 3개의 라인을 출력하는 이유는 무엇입니까? [폐쇄]

|wc가 3개의 단일 라인 파일을 포함하는 dir에 3개의 라인을 출력하는 이유는 무엇입니까? [폐쇄]
$ ls
1.txt   2.txt   3.txt
$ ls | wc
       3       3      18

세 파일 모두 한 줄만 있지만 ls|wc는 "3"을 인쇄합니다.

답변1

ls | cat파이프로 연결할 때와 터미널로 보낼 때 ls의 출력 형식이 어떻게 다른지 확인해 보세요 .

답변2

ls, 터미널이 아닌 다른 장치로 출력할 때 는 ls -1("ell"이 아닌 숫자임 1)처럼 동작하고 각 이름을 새 줄에 출력합니다.

ls파이프로 연결되지 않은 경우 출력의 행 수를 계산하려는 경우 사용합니다 ls -C. 출력이 어디로 향하든 상관없이 다중 열 출력을 강제할 수 있습니다 -C.ls

즉,

ls -C | wc

또는 행 수를 얻으려면

ls -C | wc -l

반면에 세 파일의 줄 수를 별도로 계산하려면 다음을 사용할 수 있습니다.

wc -l -- *

각 파일에 한 줄만 포함되어 있으면 결과는 다음과 같습니다.

   1 1.txt
   1 2.txt
   1 3.txt
   3 total

즉, 각 파일에는 한 줄이 포함되어 있으며 세 파일의 총 줄 수는 3개입니다.

이것차이점wc -l -- *( ls -C | wc -l또는 ls | wc당신이 쓴 것처럼) 사이에서 wc입력을 가져옵니다.

그리고 ls -C | wc -l, wc다음에서 읽어보세요산출ls따라서 명령에 의해 생성된 행 수가 계산됩니다 ls. 모든 파일의 줄 수가 아닙니다.

그걸로 우리는 독서를 wc -l -- *말한다wc특정 파일. 이 경우 파일은 와일드카드("파일 이름 와일드카드 패턴") *확장 이름에 해당합니다.

wc -l -- *wc -l -- 1.txt 2.txt 3.txt이는 디렉터리에 있는 이러한 파일 에만 해당 됩니다.

-인수가 의미로 wc해석 되므로 현재 디렉터리에 있는 파일을 호출하는 경우 제대로 작동하지 않습니다.-표준 입력. 이 문제를 해결하는 한 가지 방법은 wc -l ./*대신을 사용하는 것입니다( ./-의 경우 특별하지 않음 wc). 그러나 이는 ./접두사가 의 출력에도 표시된다는 의미입니다 wc.

답변3

ls단일 행과 다른 3개의 열이 제공되므로 wc각 열이 끝나면 새 행이 계산됩니다. 즉, ls볼 수 없더라도 서식이 지정된 텍스트를 출력합니다. 하지만 wc그것은.

관련 정보