linux find 命令没有采用正确的参数

标签 linux shell

find . -maxdepth 1 ! -path . -type f ! -name "*.gz" ${FILE_PATTERN} -mtime +${DAYS_AFTER_ARCHIVE} 

我尝试在脚本内执行上述命令,其中 ${FILE_PATTERN}${DAYS_AFTER_ARCHIVE} 是执行脚本时提供的变量。 ${FILE_PATTERN} 的变量值为 ! -名称“*警告*”。 我正在寻找执行上面的命令,就像脚本中的下面的命令

find . -maxdepth 1 ! -path . -type d ! -name "*warnings*" -mtime +7

我提供的文件模式参数为“!-name“警告”” 但收到以下错误消息

find: paths must precede expression 
Usage: find [-H] [-L] [-P] [path...] [expression]

根据上面的建议。

最佳答案

首先

-name "*.gz" ${FILE_PATTERN}

选项值太多(这通常是导致显示消息的原因)

如果您使用 bash 或类似的语言,请避开感叹号

find . -maxdepth 1 \! -path . -type f \! -name "*.gz" ${FILE_PATTERN} -mtime +${DAYS_AFTER_ARCHIVE} 

I am providing file pattern argument as "! -name "warnings"" but receiving following error message

你不能像这样组合标志和它们的值。另外,你不能像这样嵌套"。所以,它可能是这样的

 ! -name "$FILE_PATTERN"

关于linux find 命令没有采用正确的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30708827/

相关文章:

C# 可执行文件 linux Mint

c# - 在 Linux Ubuntu 中开发 C#/ASP.NET 的软件

java - 命令行参数 java * 被重载以获取文件名

bash - 使用 verbose 和 xtrace (set -vx) 记录 bash 脚本并自定义 PS4

linux - 更改用户的主目录后 bash 损坏

linux - 转换针对Linux和Bash的Makefile

c - 无法交叉编译 mip

android - 有没有办法在 C++ 中以编程方式执行 adb 命令?这部分 C++ 代码是使用 android studio 中的 ndk build 构建的。那里

c++ - 如何使用 C++ 执行 shell 命令并与 linux 上的输出交互?

shell - 同时启动应用程序池会导致与最大并发 shell 数相关的错误