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