Bash 查找:缺少到-exec的参数
我正在尝试执行以下移动命令: 如果用户想要覆盖同名文件Bash 查找:缺少到-exec的参数,bash,shell,unix,ubuntu,command-line,Bash,Shell,Unix,Ubuntu,Command Line,我正在尝试执行以下移动命令: 如果用户想要覆盖同名文件 find /pqr/xyz -maxdepth 1 -type f -exec mv -f {} /abc/def \; 如果用户不想覆盖同名文件 find /pqr/xyz -maxdepth 1 -type f -exec mv -n {} /abc/def \; 但是命令2抛出了一个错误 find : missing argument to -exec 而命令1成功执行 我可能犯了什么错误?您可以使用下面的命令 find /pq
find /pqr/xyz -maxdepth 1 -type f -exec mv -f {} /abc/def \;
如果用户不想覆盖同名文件
find /pqr/xyz -maxdepth 1 -type f -exec mv -n {} /abc/def \;
但是命令2抛出了一个错误
find : missing argument to -exec
而命令1成功执行
我可能犯了什么错误?您可以使用下面的命令
find /pqr/xyz -maxdepth 1 -type f -exec mv -f '{}' /abc/def/ \;
在{}周围加上单引号以处理文件名中的空格,它应该是/abc/def/以将文件移动到/abc/def/目录下,否则它会将文件名重命名为“def”
您也可以参考链接
希望这对你有帮助
谢谢打字错误?如果将
mv
之前的空格替换为换行符,则会发生这种情况。如果命令1起作用,find
不应该抱怨命令2中的-exec
,它在我的机器上起作用。{}
周围的单引号没有任何作用-试试看<代码>-exec自动处理报价问题。如果目录已经存在,即使没有最后的斜杠,文件也不会被命名为/abc/def
。