$ 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
그것은.