需移动Downloads及子文件夹中含关键词的文件,mv应加什么参数?
递归移动指定文件的解决方案
mv命令本身没有递归遍历子目录并匹配文件的功能,加-r/-R这类参数也无法实现需求(这些参数仅用于移动目录本身,而非遍历子目录查找文件)。要完成你的需求,需要结合find命令定位所有目标文件,再配合mv执行移动操作:
在当前的Users/name/Downloads/Subfolder目录下,执行以下命令之一:
方式一(逐个处理文件)
find ../.. -type f -iname "*Keyword*.jpg" -exec mv {} ../../NewDirectory/Pictures/ \;
方式二(批量处理文件,效率更高)
find ../.. -type f -iname "*Keyword*.jpg" -exec mv {} ../../NewDirectory/Pictures/ +
命令说明
../..:指定搜索的起始目录为Downloads(当前目录往上两级)-type f:仅搜索文件,避免误操作目录-iname "*Keyword*.jpg":忽略大小写匹配名称包含指定关键词的.jpg文件;如果需要区分大小写,替换为-name-exec mv {} 目标路径 \;:对每个找到的文件单独执行mv命令,{}会被替换为找到的文件路径;用+代替\;会将多个文件一次性传给mv,减少进程启动次数,效率更高
你之前的mv *Keyword*.jpg命令无效,是因为Shell通配符*只会匹配当前目录下的文件,不会递归遍历子目录,所以Subfolder里的目标文件没被匹配到。
内容的提问来源于stack exchange,提问作者ProclaimedMarvel
相关产品推荐
相关产品推荐

