AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 844711
Accepted
Elder Geek
Elder Geek
Asked: 2016-11-03 07:21:47 +0800 CST2016-11-03 07:21:47 +0800 CST 2016-11-03 07:21:47 +0800 CST

如何找到系统上的所有视频文件?

  • 772

我尝试使用 Unity 镜头文件搜索*.*和过滤Last Modified=All、Type=Videos和Size=All.3gp ,但什么也没找到,尽管我知道我的文件夹中有一些文件Pictures。我知道我在文件系统上安装的另一个驱动器上也有许多视频文件。

我编译了一个可能的扩展列表,并尝试了命令的多次迭代find,使用这些:

find ./ -name "*.ext" -o (etc, etc, ad nauseum)

没有任何运气。

解决办法是什么?

bash
  • 4 4 个回答
  • 33627 Views

4 个回答

  • Voted
  1. Best Answer
    Rinzwind
    2016-11-03T07:33:06+08:002016-11-03T07:33:06+08:00

    替代方案:搜索文件:

    sudo find . -type f -exec file -N -i -- {} + | grep video
    

    或者如果你只想要文件名......

    sudo find . -type f -exec file -N -i -- {} + | sed -n 's!: video/[^:]*$!!p'
    

    -N, --no-pad: 不要填充文件名

    -i, --mime:使文件命令输出 mime 类型的字符串,而不是更传统的人类可读的字符串。因此它可能会说'text/plain; charset=us-ascii' 而不是 'ASCII 文本'。为了使此选项起作用,file 更改了它处理命令本身识别的文件的方式(例如许多文本文件类型、目录等),并使用了替代的“魔术”文件。(参见下面的文件部分)。


    文件部分指向:

    文件

    /usr/share/misc/magic.mgc默认编译的魔法列表。

    /usr/share/misc/magic包含默认魔法文件的目录。


    file虽然是慢速wwwwwwwwwwwwwwwwww(它会打开所有找到的文件)但具有您不需要添加所有这些扩展名的优势。


    使用定位:

    locate *.mkv *.webm *.flv *.vob *.ogg *.ogv *.drc *gifv *.mng *.avi$ *.mov *.qt *.wmv *.yuv *.rm *.rmvb *.asf *.amv *.mp4$ *.m4v *.mp *.m?v *.svi *.3gp *.flv *.f4v
    
    • 18
  2. Elder Geek
    2016-11-03T07:21:47+08:002016-11-03T07:21:47+08:00

    我想这可以作为一个 1-liner 来完成,但它看起来有点麻烦,所以我创建了一个易于启动和编辑的脚本并将其命名为findvids.sh这对我有用。

    注意:我可能没有涵盖所有的视频文件类型,但我确信我拥有其中的大部分。一个值得注意的例外是 .mkv,因为它是项目的目标格式,我不需要查找已处理的文件。通过检查模式并进行相应调整,同时在表达式的开头和结尾保留引号,向脚本添加其他格式(扩展)以满足您的需求应该非常简单。请注意,不会找到您无权读取的文件。

    #!/bin/bash
    #This script is intended to find virtually all video file formats.
    find /. -type f | grep -E "\.webm$|\.flv$|\.vob$|\.ogg$|\.ogv$|\.drc$|\.gifv$|\.mng$|\.avi$|\.mov$|\.qt$|\.wmv$|\.yuv$|\.rm$|\.rmvb$|/.asf$|\.amv$|\.mp4$|\.m4v$|\.mp*$|\.m?v$|\.svi$|\.3gp$|\.flv$|\.f4v$"
    

    根据评论编辑:$扩展名末尾的 表示必须在行尾找到搜索词。如果我们想匹配行的开头,我们会^在我们打算匹配的术语之前使用。您可以在此处找到这些锚点的详细说明。

    我对使用定位进行了速度比较,结果是:

    time locate *.mkv *.webm *.flv *.vob *.ogg *.ogv *.drc *gifv *.mng *.avi *.mov *.qt *.wmv *.yuv *.rm *.rmvb *.asf *.amv *.mp4$ *.m4v *.mp *.m?v *.svi *.3gp *.flv *.f4v
    
    real    0m8.887s
    user    0m5.814s
    sys 0m0.052s
    

    对比

    time find /. -type f | grep -E "\.webm$|\.flv$|\.vob$|\.ogg$|\.ogv$|\.drc$|\.gifv$|\.mng$|\.avi$|\.mov$|\.qt$|\.wmv$|\.yuv$|\.rm$|\.rmvb$|/.asf$|\.amv$|\.mp4$|\.m4v$|\.mp4$|\.m?v$|\.svi$|\.3gp$|\.flv$|\.f4v$"
    
    real    0m2.795s
    user    0m0.657s
    sys 0m1.115s
    

    没想到发现速度更快。我将使用这种方法。

    编辑:进一步的测试表明在另一台机器上定位速度更快。我认为我最初的速度测试结果是由于缓存而造成的。

    资料来源:

    man find

    man grep

    https://stackoverflow.com/questions/7190565/unix-find-multiple-file-types

    • 11
  3. Roger Spencer
    2020-08-07T02:10:28+08:002020-08-07T02:10:28+08:00

    在Elder Geek 答案find中的命令中,区分大小写让我感到困惑。我的设备在拍摄视频等时似乎经常使用大写字母。只需向 grep 添加选项即可解决此问题:-i

    find /. -type f | grep -iE "\.webm$|\.flv$|\.vob$|\.ogg$|\.ogv$|\.drc$|\.gifv$|\.mng$|\.avi$|\.mov$|\.qt$|\.wmv$|\.yuv$|\.rm$|\.rmvb$|/.asf$|\.amv$|\.mp4$|\.m4v$|\.mp*$|\.m?v$|\.svi$|\.3gp$|\.flv$|\.f4v$"
    
    • 2
  4. Weihang Jian
    2022-03-04T06:34:44+08:002022-03-04T06:34:44+08:00

    这是一个由 和 组成的可靠且简单find的file答案grep:

    find . -type f |
      file --mime-type --no-pad --files-from - |
      grep --fixed-strings ': image/'
    

    请注意,它不适用于包含: image/.

    • 0

相关问题

  • 同时复制到两个位置

  • 如何在 shell 脚本中创建选择菜单?

  • 从 bash 迁移到 zsh [关闭]

  • bashrc 还是 bash_profile?

  • 备份 bash 脚本未压缩其 tarball

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve