如何仅从嵌套子目录中移动具有特定扩展名的文件?

lov*_*eed 4 bash

在一个目录中,我有许多子目录,每个子目录都有许多不同类型的文件.我想从每个子目录中提取具有特定扩展名的所有文件,并将其放在不同的文件夹中.是否可以编写一个bash脚本来执行此操作?如果是这样的话?

ver*_*nzt 9

$ find <directory> -name '*.foo' -exec mv '{}' <other_directory> \;
Run Code Online (Sandbox Code Playgroud)

find 通过目录结构进行递归搜索,并对找到的与搜索条件匹配的任何文件执行给定操作.

在这种情况下,-name '*.foo'是搜索条件,并-exec mv '{}' <other_directory> \;告诉find执行 mv它找到的任何文件,其中'{}'转换为文件名并\;表示命令的结束.


nov*_*cik 7

如果你有bash v4并且有

shopt -s globstar
Run Code Online (Sandbox Code Playgroud)

在.profile中,您可以使用:

mv ./sourcedir/**/*.ext ./targetdir
Run Code Online (Sandbox Code Playgroud)