使用 Bash 查找来识别其文件夹包含所需单词的文件



我编写了一个非常简单的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是一个真正的宝库。

相关内容

  • 没有找到相关文章

最新更新