“.mp4″확장자로 끝나는 특정 디렉토리의 총 파일 수를 계산하고 싶습니다.
다음 명령을 받고 있습니다.
ls -F |grep -v / | wc -l
특정 디렉토리의 모든 파일을 계산하지만 확장자가 .mp4 인 파일 수를 원합니다.
그것에 대한 우분투 명령이 있습니까?
답변
여기서 당신은 이런 식으로 할 수 있습니다
ls -lR /path/to/dir/*.jpg | wc -l
이것은 당신에게 계산을 제공합니다
답변
불행히도이 양성 문제는 모든 파일 이름을 지원하고 이식 가능한 방식으로 해결하기 어렵습니다. 이것은 안전합니다 (숨겨진 파일, 공백을 포함하는 경로, 대시 및 줄 바꿈 처리) 및 POSIX 호환 :
find /path/to/directory -mindepth 1 -type f -name "*.mp4" -printf x | wc -c
재귀 적이기를 원하지 않으면 간단히 추가하십시오 -maxdepth 1
.
테스트:
$ cd -- "$(mktemp -d)"
$ touch -- -foo.mp4 .bar.mp4 .bat.mp4 'baz.mp4
> ban.mp4'
$ find . -mindepth 1 -type f -name "*.mp4" -exec printf x \; | wc -c
4
허용 된 답변 과 비교하십시오 .
$ ls -lR ./*.mp4 | wc -l
3
또는 다른 제안 :
$ find . -name "*.mp4" | wc -l
5
$ ls -1 *.mp4 | wc -l
ls: invalid option -- '.'
Try 'ls --help' for more information.
0
$ find . -name "*.mp4" | wc -c # Answer fixed at a later time
51
$ find . -name "*.mp4" | wc -l
5
$ find . | grep -i ".mp4$" | wc -l
5
$ ls . | grep ".mp4$" | wc -l
3
답변
이것은 확장명으로 모든 파일을 순서대로 찾고 정렬하고 나열합니다.
find . -type f | sed 's/.*\.//' | sort | uniq -c
답변
다음 명령으로 매우 간단하다고 생각합니다.
$ find . -name "*.mp4" | wc -l
8
또는
$ find . | grep -i ".mp4$" | wc -l
8
위의 명령은 파일 및 디렉토리 이름의 수를 계산한다고 생각합니다. *.mp4
-type f
옵션 find
을 다음과 같이 매개 변수로 사용하는 것이 좋습니다 .
$ find . -name "*.mp4" -type f | wc -l
8
또한 ls -lR
사용할 수 있습니다find .
답변
사용할 수 있습니다 ls -1 *.mp4 | wc -l
.
그러면에 끝나는 모든 파일이 나열되고 .mp4
각 파일을 새 줄 ( ls -1 *.mp4
) 에 인쇄 wc
하고 -l
플래그를 사용하여 새 줄 수를 세는 출력을 파이프합니다 .
답변
.mp4가 포함 된 파일 목록이 표시됩니다.
ls /path/to/directory | grep ".mp4$"
와 결합 wc -l
하면 계산할 수 있습니다
ls /path/to/directory | grep ".mp4$" | wc -l
하위 디렉토리를 포함하도록 검색하려는 경우
ls -lR /path/to/directory | grep ".mp4$" | wc -l
답변
bash에서 glob가있는 배열을 사용하는 한 가지 차가운 방법은 다음과 같습니다.
$ files=( *.mp4 )
$ echo ${#files[@]}
30