Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 查找:缺少到-exec的参数_Bash_Shell_Unix_Ubuntu_Command Line - Fatal编程技术网

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