【问题标题】:find : missing argument to -exec查找:缺少 -exec 的参数
【发布时间】:2014-04-05 19:26:57
【问题描述】:

我正在尝试执行以下移动命令:

如果用户想覆盖同名文件

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 执行成功。

我可能犯了什么错误?

【问题讨论】:

  • 错字?如果mv 之前的空格被换行符替换,就会发生这种情况。如果命令 1 有效,find 不应在命令 2 中抱怨 -exec
  • 这适用于我的机器。

标签: bash shell unix ubuntu command-line


【解决方案1】:

你可以使用下面的命令

find /pqr/xyz -maxdepth 1 -type f -exec mv -f '{}' /abc/def/ \;

单引号 {} 用于处理文件名中的空格,它应该是 /abc/def/ 以移动 /abc/def/ 目录下的文件,否则它将文件名重命名为'def'

也可以参考usage链接

希望对你有帮助

谢谢

【讨论】:

  • {} 周围的单引号什么也不做——试试看。 -exec 自动处理引用问题。即使没有最后的斜杠如果目录已经存在,文件也不会被命名为/abc/def
猜你喜欢
  • 2011-02-27
  • 1970-01-01
  • 2012-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-22
  • 2017-12-16
  • 1970-01-01
相关资源
最近更新 更多