【问题标题】:Unix command not workingUnix命令不起作用
【发布时间】:2017-10-13 06:52:11
【问题描述】:

我需要递归一个目录,删除所有带有js和map扩展名的文件。

我目前拥有的不起作用的是

find . -name *.js -or -name *.map | xargs rm

这个命令有什么明显的错误吗?

【问题讨论】:

  • 首先,以安全的方式进行调试。将 xargs rm 更改为 xargs echo 并验证您的输出。其次,在你去别名之前从命令行尝试实际的命令。所以在 shell 中运行 find 命令,看看你得到了什么。您应该会看到它找到的所有文件的名称。如果为空,则说明文件名有问题或没有文件。
  • find 命令是问题所在,它什么也没返回。我根本不应该包含别名。我会更新问题
  • Find 命令在我的 shell 中对以 .py 结尾的文件有效,我有很多文件。问题不在于命令,而在于它在做什么。
  • 直到现在我还没有意识到-o也可以写成-or-a-and也一样)。但较长的形式似乎是 GNU 扩展,不是 POSIX 强制要求的,因此使用 -o 可能更安全。

标签: shell unix scripting


【解决方案1】:

shell 可能正在扩展要查找的参数。引用他们:

find . \( -name '*.js' -or -name '*.map' \) -delete

【讨论】:

  • 请注意(取决于您的 shell 和设置)如果当前目录中碰巧没有匹配的文件,原始命令可能会起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-15
  • 2019-04-17
  • 1970-01-01
  • 2013-01-14
  • 2014-09-28
  • 2023-04-08
  • 2018-11-14
相关资源
最近更新 更多