我编写了一个非常简单的bash程序来查找具有给定名称的视频文件并在VLC中播放它们。
这足够好用,但我似乎无法弄清楚如何让 find 命令也检查包含文件夹的名称。
这是一个问题,因为我经常观看描述性命名文件夹中的系列,但其文件名通常是"第 1 集"、"第 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
是一个真正的宝库。