为什么 find 会抱怨无效的表达式?

为什么 find 会抱怨无效的表达式?

我有这样的 shell 脚本来从备份文件复制到每周目录:

#!/bin/sh
find . type f \( -iname "SS1*.tar" -o -iname "SS2*.tar" -o -iname "SS3*.tar" -o -iname "SS4*.tar"\) -exec cp {} /backup_file/backup/weekly \;

因此,在执行它之后,我收到一条错误消息:“表达式无效”。

请帮我解决这个问题。

答案1

您有两个语法错误:

  • type f必须是-type f
  • 你之前需要一个空间\)

所以固定命令:

find . -type f \( -iname "SS1*.tar" -o -iname "SS2*.tar" -o -iname "SS3*.tar" -o -iname "SS4*.tar" \) -exec cp {} /backup_file/backup/weekly \;

答案2

更简单:find . -type f -iname "SS[1234]*.tar" -exec cp {} /backup_file/backup/weekly \;

相关内容