![如何在 find 命令的 -exec 选项内将路径连接到 {}?](https://linux22.com/image/1339595/%E5%A6%82%E4%BD%95%E5%9C%A8%20find%20%E5%91%BD%E4%BB%A4%E7%9A%84%20-exec%20%E9%80%89%E9%A1%B9%E5%86%85%E5%B0%86%E8%B7%AF%E5%BE%84%E8%BF%9E%E6%8E%A5%E5%88%B0%20%7B%7D%EF%BC%9F.png)
//// 解决了 ////
我正在尝试将分散在目录结构中的几个文件复制到另一个目录结构中,而这些文件已经存在,但没有写入权限。因此,我使用了寻找使用两个命令-执行选项 (-好的选项,这里只是为了调试),第一个用于修改模式命令,第二个命令cp命令带有两个对 {} 的引用。
我认为问题在于如何将目标根路径连接到变量 {}。我尝试了其他方式来连接这些路径而无需退出。
我知道我可以使用其他工具来完成此操作(sed,awk,perl,bash 脚本,将查找结果发送到文件并在第二阶段进行处理,...)但我认为这个更简单。
你知道有什么办法可以让它工作吗?提前谢谢。
$ cd ~/sourceBranch/
$ find . \( -name '*.h*' -o -name '*.c*' \) -a -ctime -1 -ok chmod -v u+w /tmp/destBranch/{} \; -ok cp -uv {} /tmp/destBranch/{} \;
但是我得到了这个输出(仅显示找到的第一个文件):
< chmod ... ./Node/Db/UtilCLib/src/Constants.cc > ? yes
mode of `/tmp/destBranch/' retained as 0755 (rwxr-xr-x) <--- wrong path
< cp ... ./Node/Db/UtilCLib/src/Constants.cc > ? y
`./Node/Db/UtilCLib/src/Constants.cc' -> `/tmp/destBranch/Constants.cc' <--- wrong path
答案1
发送此问题后,我意识到我忘了用引号保护 {} 变量!现在它正常工作了。如果您阅读它浪费了时间,我很抱歉。