Linux 如何在shell脚本中检查和使用cp命令的状态?
这是我的shell脚本中的一条语句${origin}和${archive}是两个目录 该命令读取${origin}文件夹中的所有jpg、png和jpeg文件,并将它们复制到${archive}文件夹Linux 如何在shell脚本中检查和使用cp命令的状态?,linux,bash,shell,if-statement,cp,Linux,Bash,Shell,If Statement,Cp,这是我的shell脚本中的一条语句${origin}和${archive}是两个目录 该命令读取${origin}文件夹中的所有jpg、png和jpeg文件,并将它们复制到${archive}文件夹 find ${origin} -regex '.*\(jpg\|png\|jpeg\)' -exec cp -n {} ${archive} \; 我想要的是,如果cp成功地复制了一个文件,(还指示该文件在${archive}文件夹中不存在),它将执行一些命令 问题: 如何知道cp是否成功复制了s
find ${origin} -regex '.*\(jpg\|png\|jpeg\)' -exec cp -n {} ${archive} \;
我想要的是,如果cp成功地复制了一个文件,(还指示该文件在${archive}文件夹中不存在),它将执行一些命令
问题:
find-exec
的文档说明:
执行命令;如果返回0状态,则为true
此上下文中的“true”表示-exec
命令的结果,该命令控制是否继续处理匹配的文件。所以你可以这样做:
find ... -exec cp -n {} ${archive} \; -exec OTHER STUFF \;
即,首先尝试复制文件。如果
cp
成功,它将返回0
,而find
将其视为true
意思是“继续处理此文件”。find-exec的文档说明:
执行命令;如果返回0状态,则为true
此上下文中的“true”表示-exec
命令的结果,该命令控制是否继续处理匹配的文件。所以你可以这样做:
find ... -exec cp -n {} ${archive} \; -exec OTHER STUFF \;
即,首先尝试复制文件。如果
cp
成功,它将返回0
,而find
将其视为true
意思是“继续处理此文件”。感谢您的回答。它完美地解决了我的问题。是否可以检查cp命令是否覆盖shell脚本中的现有文件?可以使用类似于-exec test-f${archive}/{}的命令
仅当目标中已存在文件时,才会继续处理。放一个
在测试
前面,以反转支票。感谢您的回答。它完美地解决了我的问题。是否可以检查cp命令是否覆盖shell脚本中的现有文件?可以使用类似于-exec test-f${archive}/{}的命令
仅当目标中已存在文件时,才会继续处理。放一个在测试
前面编码>以反转检查。