Answers:
基本思想是使用文件实用程序来确定每个文件的类型,并对视频文件进行过滤。
find /some/directory -type f -exec file -N -i -- {} + |
sed -n 's!: video/[^:]*$!!p'
这将以/some/directory
递归方式打印MIME类型为视频类型的所有文件及其子目录的名称。
该file
命令需要打开每个文件,这可能会很慢。要加快速度:
/tmp
)/var/tmp
和主目录中。这是一个示例,它将修改时间限制为至少60天前,而ctime限制为不超过100天前。
find /tmp /var/tmp ~ -type f -size +10M \
-mtime +60 -ctime -100 \
-exec file -N -i -- {} + |
sed -n 's!: video/[^:]*$!!p'
sed
排除不匹配的行的选项(以及file
不打错行的选项),请参见我的编辑。
file
唯一的选择。
正如克里斯在回答中提到的,您可以使用它find
来完成此操作,但是我发现搜索locate
数据库的速度要快得多。
假设您的发行版提供了此功能,那么大多数大型发行版都可以提供,例如Ubuntu,Fedora,CentOS等。
$ locate --basename .mp4 .mkv .wmv .flv .webm .mov .avi | head -5
/home/saml/Desktop/sample_mpeg4.mp4
/home/saml/Downloads/Karrolls_Christmas/Karroll's Christmas (2004) part 1.mp4
/home/saml/Downloads/Karrolls_Christmas/Karroll's Christmas (2004) part 10.mp4
/home/saml/Downloads/Karrolls_Christmas/Karroll's Christmas (2004) part 2.mp4
/home/saml/Downloads/Karrolls_Christmas/Karroll's Christmas (2004) part 3.mp4
要按类型查找文件,可以使用命令file
获取有关特定文件类型的信息列表。
这是我的系统Fedora 19中这些文件类型的粗略列表。
您可以使用此命令查找/home/<user>
目录中的所有文件。
$ find /home/<user> -type f -exec file {} + | \
grep -E "MPEG v4|EBML|\
Microsoft ASF|Macromedia Flash Video|WebM|Apple QuickTime movie|AVI"
另外,您可以使用file
和搜索归类为“视频”的mime类型。
-i, --mime
Causes the file command to output mime type strings rather than
the more traditional human readable ones. Thus it may say
‘text/plain; charset=us-ascii’ rather than “ASCII text”.
使我们上面所做的事情适应这样的事情:
$ find /home/<user> -type f -exec file -i {} + | grep video
您可以使用sed
来获取文件名:
$ find /home/<user> -type f -exec file -i {} + |
sed -n '/video/s/:[^:]\+$//p'
locate
已安装,而且已建立数据库。
avi
。
由于您现在指定它不能基于扩展名,因此您也可以仔细阅读file
(警告:这可能需要很长时间):
find ~ -type f -exec file -i {} + | grep video
如果您可以按文件名进行搜索,那么假设该文件名具有通用的视频扩展名,并且位于您的主目录中:
find ~ -type f -name '*.mkv' -o -name '*.mp4' -o -name '*.wmv' -o -name '*.flv' -o -name '*.webm' -o -name '*.mov'
您还可以使用正则表达式:
find ~ -type f -regex '.*\.\(mkv\|mp4\|wmv\|flv\|webm\|mov\)'
如果您对何时下载它有个好主意(并假设将mtime设置为该时间),也可以尝试使用GNU find的-mtime
选项来缩小范围。
/home/ravbholua/Downloads/Music_Command_line/Any s_w to cut_add audio files, convert video to audio?_files/post_old.gif: image/gif; charset=binary
另一行是:/home/ravbholua/Downloads/Music_Command_line/command line - how to start a video from the terminal? - Ask Ubuntu.html: text/html; charset=utf-8
这没有解决我的目的。
/home/ravbholua/Downloads/Music_Command_line/[SOLVED] a code question regarding music file extensions_files/avatar774785_6.gif: image/jpeg; charset=binary
另一行输出是:/home/ravbholua/Free Computer Networking Books Download | Ebooks Online Textbooks.html: text/html; charset=iso-8859-1
我只需要将在vlc Player中运行的视频文件,等等