【问题标题】:Shell says find: missing argument to `-exec' and no alternatives working壳牌说 find: missing argument to `-exec' and no alternatives working
【发布时间】:2015-11-18 15:47:01
【问题描述】:

我最近使用的一个备份程序在我的计算机上复制了一大堆文件,因为我后来更改了一些设置。

当备份程序进行复制时,它会将旧的重命名为original1.thefilename.extension。我正在尝试使用简单的 shell 命令自动删除所有这些不必要的文件。

 find -type f -name 'original1*' -exec rm {} \;

但是,当我尝试运行它时,我得到了

find: missing argument to `-exec'

我已经在整个网络上寻找解决方案。我发现我应该尝试exec rm +-exec rm {} +-exec rm {} \;-exec rm + 等的建议,但它们都不起作用。我使用的是 Windows 8.1

非常感谢任何帮助!

【问题讨论】:

  • 我要问...你使用的是windows命令shell吗?还是赛格温?运行 Unix 虚拟机?或者您是否连接到其他地方的 Unix 服务器?我对“我正在使用 Windows 8.1”声明感到困惑。
  • 如果您使用的是 Windows 8.1,您使用的是哪个版本的 find?赛格温?明威?其他版本?用环境名称标记问题是明智的。你用的是哪个外壳?如果您使用\{\}'{}'"{}" 而不仅仅是{} 会发生什么?
  • 我正在使用 Cmder,并使用 cmd 窗口
  • @JonathanLeffler find --version 返回GNU find version 4.1
  • 但是您使用的是 cmd.exe 外壳和窗口?或者您是否正在使用其他一些看起来有点像 cmd.exe 窗口并在其中运行 shell 的终端?我没有遇到“Cmder”,但这可能只是意味着我没有关注 Windows(这是准确的)。也就是说,谷歌搜索“cmder”很容易找到它。不过,我不清楚它支持哪种 shell 语言。我怀疑{} 是shell 的某种元字符,需要转义。例如,在某些情况下,Bash 会将{0..9} 解释为值 0 到 9。也许这样的事情正在发生。

标签: windows shell find rm


【解决方案1】:

在 Windows 命令 shell 中,您不需要转义分号。

find -type f -name 'original1*' -exec rm {} ;

您的命令版本应该在 bash shell(如 cygwin)中工作。

有趣的是,你得到了 gnu find 来执行,因为在我的 Windows 8.1 机器上,我得到了微软的 find

【讨论】:

    猜你喜欢
    • 2014-02-04
    • 1970-01-01
    • 2021-10-22
    • 2021-03-02
    • 2019-03-25
    • 2022-12-02
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多