我编写了一个非常简单的bash程序,以查找具有给定名称的视频文件并在VLC中播放它们。
这工作得很好,但是我似乎无法弄清楚如何使find命令也检查包含文件夹的名称。
这是一个问题,因为我经常观看系列,这些系列位于描述性命名的文件夹中,但是其文件名通常为“ episode 1”,“ episode 2”等。
我不能简单地搜索文件夹本身,因为这些文件夹可能包含VLC无法处理的其他文件格式。
我当前的代码如下所示:
A=$(find -iname "*$partOfNameToFind*" -exec echo -n '"{}" ' \; | grep -e mp4 -e flv -e wav -e wmv | sed -e 's/\.\///g' | tr '\n' ' ')
eval vlc --nointeract $A
任何帮助将不胜感激!
-iwholename
可能是您正在寻找的选择。虽然-iname
只对文件名起作用,但-iwholename
对...全称(路径)起作用。;-)
添加更多“发现香料”后,您最终可能会发现:
find . -type f \
-iwholename "*$partOfNameToFind*" \
\( -name "*.mp4" \
-o -name "*.flv" \
-o -name "*.wav" \
-o -name "*.wmv" \
\) \
-exec vlc --nointeract {} +
注意上面将匹配$partOfNameToFind
在任何文件或目录名。
find ... -exec {}
正确处理任何文件名,包括空格,全局字符,换行符或其他。尾随+
多个匹配项作为一行参数;如果您的查询匹配大量文件(例如,列表的长度超出了Shell的处理能力),则将在的多个调用中进行分解vlc
。
尾部\;
将改为对vlc --nointeract
找到的每个文件进行一次调用。
话虽这么说,我总是发现man find
这是一个真正的宝库。;-)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句