我正在使用Ubuntu
,我需要递归搜索任何.mp4
,.mkv
或.wav
文件的目录和子目录。我看到mmv
可能是我最好的解决方案,但我无法正确理解语法。那么我如何将其转换为搜索文件名数组,或者我只想为我追求的每个文件扩展名运行3次迭代?
我在这里使用这个教程来写这个,所以如果我不在线,请原谅我 find all m3
# find / -iname "*.mp4" -type f -exec mv {} ./Downloads/Media Files \;
答案 0 :(得分:2)
您可以使用\(
和-o
(或):
find / -type f \( -iname "*.mp4" -o -iname "*.mkv" -o -iname "*.wav" \) -exec mv {} ./Downloads/Media Files \;
答案 1 :(得分:2)
使用GNU bash 4:
shopt -s globstar nullglob
mv -v **/*.{mp4,mkv,wav} ./Downloads/Media Files
globstar
:如果设置,路径名扩展上下文中使用的模式**将匹配所有文件以及零个或多个目录和子目录。如果模式后跟一个/,则只有目录和子目录匹配。
nullglob
:如果设置,bash允许不匹配任何文件的模式(请参阅路径名扩展)扩展为空字符串,而不是自己。
答案 2 :(得分:0)
用-regex替换-iname。默认情况下,Regex了解emacs正则表达式(但您可以使用-regextype更改此行为):
find / -regex ".*\.mp4\|.*\.mkv\|.*\.wav" ...
了解reguar表达的力量,它将开启一个新的力量世界!