Linux批量复制专辑目录cover.jpg为folder.jpg的命令报错求助
解决方法
你的命令出错是因为参数顺序和路径逻辑不对:cp的语法是cp 源文件 目标文件/目录,原命令里你把找到的cover.jpg文件路径当成了目标目录,但它本身是个文件,自然会报“不是目录”的错误;而且你写的cover.jpg是相对当前执行命令的目录,不是每个专辑目录下的那个目标文件。
给你两种可行的命令:
方法一(最简单):用
find的-execdir参数,它会自动切换到找到文件的所在目录执行命令:find . -iname "cover.jpg" -execdir cp cover.jpg folder.jpg \;这个命令会找到所有
cover.jpg,自动进入它所在的专辑目录,直接把该目录下的cover.jpg复制为folder.jpg。方法二:用
sh -c手动处理路径,提取文件所在目录:find . -iname "cover.jpg" -exec sh -c 'cp "$0" "$(dirname "$0")/folder.jpg"' {} \;这里
$0代表找到的cover.jpg的完整路径,dirname "$0"会提取出它所在的专辑目录,随后把原文件复制到该目录下的folder.jpg。
如果你的cover.jpg文件名存在大小写变化(比如Cover.jpg或COVER.JPG),-iname已经帮你处理了大小写不敏感的匹配,无需额外修改。
内容的提问来源于stack exchange,提问作者InvisibleInk
相关产品推荐
相关产品推荐

