【问题标题】:`rm -f` asks for confirmation, when aliased as `rm -i``rm -f` 要求确认,当别名为 `rm -i` 时
【发布时间】:2016-08-02 11:44:22
【问题描述】:

我正在使用此命令尝试删除一个非常大的文件夹中的所有 Thumbs.db 文件。我认为-f 应该在不要求确认的情况下强制删除,但我仍然被提示在每个文件上输入“y”或“n”。

find "megapacks" -name Thumbs.db -ok rm -f {} \;

我尝试type rm 看看是否有别名,它的回应是

rm 别名为 `rm -i'

我尝试改用/bin/rm,但仍然收到提示

find "megapacks" -name Thumbs.db -ok /bin/rm -f {} \;

是否有人对如何避免确认有其他想法?

【问题讨论】:

  • 改用-delete
  • 请注意,别名不会为命令的参数扩展,这就是rm 的含义。
  • unalias rm 在你失去将枪对准你的脚的所有谨慎之前。

标签: bash alias rm


【解决方案1】:

问题在于-ok 选项,即man find

喜欢-exec,但先询问用户。如果用户同意,请运行该命令。否则就返回 false。

这应该适用于-exec

find "megapacks" -name Thumbs.db -exec /bin/rm -f {} \;

或更快:

find "megapacks" -name Thumbs.db -exec /bin/rm -f {} +

【讨论】:

    【解决方案2】:

    但我认为问题在于您将-ok 传递给find,即

    点赞-exec,但先询问用户。

    如果别名是问题,只需取消设置别名:

    unalias rm
    

    请注意,这只影响当前的 shell 会话。

    您还可以为find 使用-delete 选项:

    find "megapacks" -name Thumbs.db -delete
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      • 2011-12-29
      • 1970-01-01
      • 2015-08-05
      相关资源
      最近更新 更多