폴더 아래의 파일 수를 계산하고 다음 명령을 사용해야 합니다.
cd testfolder
bash-4.1$ ls | wc -l
6
실제로 이 폴더에는 5개의 파일만 있습니다.
bash-4.1$ ls
total 44
-rw-r--r-- 1 comp 11595 Sep 4 22:51 30.xls.txt
-rw-r--r-- 1 comp 14492 Sep 4 22:51 A.pdf.txt
-rw-r--r-- 1 comp 8160 Sep 4 22:51 comparison.docx.txt
-rw-r--r-- 1 comp 903 Sep 4 22:51 Survey.pdf.txt
-rw-r--r-- 1 comp 1206 Sep 4 22:51 Steam Table.xls.txt
심지어 파일 ls | wc -l
로 간주되는 것 같은데 이는 잘못된 것입니다.total 44
답변1
위의 내용에 대한 추가 정보는 다음과 같습니다.
출력을 처리하려면 find
결과를 다른 애플리케이션으로 파이핑하는 데 더 적합한 일부 퓨처가 있는 대신 사용해야 합니다.ls
-print0
위의 경우에는 이렇게 사용하면 됩니다.
find . -type f | wc -l
여기에는 모든 항목이 나열됩니다.문서현재 디렉토리에.
답변2
이 경우를 포함하여 wc -l
명령 출력의 행 수가 반환되기 때문에 작동하지 않습니다 . 쉘에 별칭이 있으므로 출력 을 엉망으로 만드는 추가 정보를 얻게 됩니다.ls
total 44
ls
ls -cml
대신 명령을 사용하십시오 "ls" -Aq | wc -l
. -A 명령은 도트 파일을 포함하여 디렉터리의 모든 파일을 나열하지만 .
및 제외합니다 ..
. 여기서 참조는 중요합니다. 별칭을 무시하고 /bin/ls
직접 실행됩니다.
-q
파일 이름에 개행 문자가 포함되어 있더라도 파일 이름이 한 줄에만 인쇄되도록 합니다(그러면 렌더링됨 ?
).
답변3
wc
파일 카운터가 아닌 문자, 단어 및 줄 카운터입니다.
원하는 결과를 계산하고 이에 따라 계산을 조정하는 것은 프로그래머/스크립터로서의 책임입니다.
귀하의 경우에는 다음과 같이 할 수 있습니다.
echo $((`ls|wc -l`-1))
마지막으로 ls
인수 없이는 정상적이지 않은 매우 긴 목록을 제공하므로 별칭을 지정할 수 있습니다 ls
. 따라서 혼란을 피하기 위해 ls
(일반적으로) 전체 경로를 참조하는 것이 좋습니다 ./bin/ls
답변4
bash-4.1$ ls
1. total 44
2. -rw-r--r-- 1 comp 11595 Sep 4 22:51 30.xls.txt
3. -rw-r--r-- 1 comp 14492 Sep 4 22:51 A.pdf.txt
4. -rw-r--r-- 1 comp 8160 Sep 4 22:51 comparison.docx.txt
5. -rw-r--r-- 1 comp 903 Sep 4 22:51 Survey.pdf.txt
6. -rw-r--r-- 1 comp 1206 Sep 4 22:51 Steam Table.xls.txt
예, 출력에는 6줄이 있습니다. 다음 을 사용할 수 있습니다. ls -1
단일 열 형식에 해당하며 다음과 같습니다.
ls -1
Desktop
Documents
Downloads
Music
Pictures
Public
Templates
Videos
이제 wc -l
올바른 수의 파일을 반환합니다.
ls -1 | wc -l
8