在unix中使用括号时遇到问题并找到正确的语法

时间:2014-11-12 06:12:22

标签: bash find

这一个班轮工作,目标:

  • 搜索目录
  • 查找比timestamp文件
  • 更新的所有文件
  • 未命名.DS_Store
  • 否则,列出所有其他文件。

我提出了这个,它有效,但我看到网上的例子使用了很多我没有使用的括号。我在想可能有更好的方法:

find /Users/$USER/Library/Messages/Attachments -not -name ".DS_Store" -not -name "timestamp" -name "*" -type f -newer /Users/$USER/Library/Messages/scripts/timestamp

最终我想把结果复制到一个特定的地方。为此,我要补充一下:

-exec cp {} archive_files/ \;

1 个答案:

答案 0 :(得分:2)

可以将所有-not表达式合并到带括号的组中,方法是应用de Morgan's Law

-not \( -name .DS_Store -o -name timestamp \)

我在你的简单案例中没有看到这一点,但如果你有很多名字要排除它可能会更清楚。