【发布时间】: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。也许这样的事情正在发生。