我想计算特定目录中以“.mp4”扩展名结尾的文件总数。
我收到以下命令:
ls -F |grep -v / | wc -l
Run Code Online (Sandbox Code Playgroud)
它计算特定目录中的所有文件,但我想要以 .mp4 扩展名结尾的文件数。
是否有任何 Ubuntu 命令?
l0b*_*0b0 46
不幸的是,这个良性问题很难以支持所有文件名且可移植的方式解决。这是安全的(它处理隐藏文件、包含空格、破折号甚至换行符的路径)并且与 POSIX 兼容:
find /path/to/directory -mindepth 1 -type f -name "*.mp4" -printf x | wc -c
Run Code Online (Sandbox Code Playgroud)
如果您不希望它是递归的,只需添加-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
Run Code Online (Sandbox Code Playgroud)
与接受的答案进行比较:
$ ls -lR ./*.mp4 | wc -l
3
Run Code Online (Sandbox Code Playgroud)
或其他建议:
$ 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
Run Code Online (Sandbox Code Playgroud)
小智 29
在这里你可以这样做
ls -lR /path/to/dir/*.jpg | wc -l
Run Code Online (Sandbox Code Playgroud)
这给你数
小智 15
这个按扩展名按顺序查找、排序和列出所有文件:
find . -type f | sed 's/.*\.//' | sort | uniq -c
Run Code Online (Sandbox Code Playgroud)
我认为这很简单,如下命令。
$ find . -name "*.mp4" | wc -l
8
Run Code Online (Sandbox Code Playgroud)
或者
$ find . | grep -i ".mp4$" | wc -l
8
Run Code Online (Sandbox Code Playgroud)
我认为上面的命令计算文件和目录名称的数量 *.mp4
所以我建议你使用-type f
选项作为find
参数如下。
$ find . -name "*.mp4" -type f | wc -l
8
Run Code Online (Sandbox Code Playgroud)
此外,ls -lR
可以用作find .