首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用于列出包含文件计数的文件夹的UNIX命令

用于列出包含文件计数的文件夹的UNIX命令
EN

Stack Overflow用户
提问于 2009-03-10 01:56:45
回答 3查看 28.4K关注 0票数 18

我希望获得当前级别的文件夹列表(不包括它们的子文件夹),并简单地打印文件夹名和文件夹中文件数量的计数(如果可能,最好过滤到*.jpg )。

在标准的bash shell中,这是可能的吗?ls -l打印除文件数量以外的所有内容:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-03-10 02:09:52

我想出了这个:

代码语言:javascript
复制
find -maxdepth 1 -type d | while read dir; do 
    count=$(find "$dir" -maxdepth 1 -iname \*.jpg | wc -l)
    echo "$dir ; $count"
done

如果考虑到子目录,在目录中搜索jpg文件应该是递归的,则删除第二个-maxdepth 1。请注意,这只考虑了文件的名称。你可以重命名一个文件,隐藏它是一个jpg图片。您可以使用file命令对内容进行猜测(现在,也可以递归搜索):

代码语言:javascript
复制
find -mindepth 1 -maxdepth 1 -type d | while read dir; do 
    count=$(find "$dir" -type f | xargs file -b --mime-type | 
            grep 'image/jpeg' | wc -l)
    echo "$dir ; $count"
done

然而,这要慢得多,因为它必须读取文件的一部分,并最终解释它们包含的内容(如果幸运的话,它会在文件的开头找到一个神奇的id )。-mindepth 1阻止它将. (当前目录)打印为它搜索的另一个目录。

票数 21
EN

Stack Overflow用户

发布于 2009-03-10 02:25:37

我的是从命令行输入的更快。:)

与以下建议相比,其他建议是否提供了任何真正的优势?

代码语言:javascript
复制
find -name '*.jpg' | wc -l               # recursive


find -maxdepth 1 -name '*.jpg' | wc -l   # current directory only
票数 9
EN

Stack Overflow用户

发布于 2009-03-10 02:10:41

代码语言:javascript
复制
#!/bin/bash
for dir in `find . -type d | grep -v "\.$"`; do
echo $dir
ls $dir/*.jpg | wc -l
done;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/628662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档