【问题标题】:Maxdepth option not working find command in SolarisMaxdepth 选项在 Solaris 中不起作用 find 命令
【发布时间】:2020-11-05 06:12:44
【问题描述】:

我在 solaris 中使用以下命令创建脚本

name=$(date +"%y-%m-%d")
mkdir /cms/Oracle/Middleware/dib_common/archive/Advices/EMAIL/$name
find /cms/Oracle/Middleware/dib_common/Advices/EMAIL/ -type f -mtime +30   -exec mv {} /cms/Oracle/Middleware/dib_common/archive/Advices/EMAIL/$name \;
tar -zcvf /cms/Oracle/Middleware/dib_common/archive/Advices/EMAIL/${name}.tar.gz /cms/Oracle/Middleware/dib_common/archive/Advices/EMAIL/${name}
find /cms/Oracle/Middleware/dib_common/archive/Advices/EMAIL/ -mtime +60 -name "*.tar.gz" -exec rm {} \;

-maxdepth 给出以下错误。

-bash-4.4$ find /cms/Oracle/Middleware/dib_common/Advices/EMAIL/ -type f -mtime +30 -maxdepth 1 -exec mv {} /cms/Oracle/Middleware/dib_common/archive/Advices/EMAIL/$name \;
find: bad option -maxdepth
find: [-H | -L] path-list predicate-list
-bash-4.4$

即使-path 也不起作用。

这里有什么解决方法吗?

我的要求是我只想从下面的目录而不是任何子目录中查找文件

/cms/Oracle/Middleware/dib_common/Advices/EMAIL/

【问题讨论】:

  • find 的 Solaris 手册页是否说它支持非 POSIX 选项?

标签: linux bash shell find


【解决方案1】:

查找命令:

find path/to/the/dir -type f -maxdepth 1

可以替换为:

find path/to/the/dir/. -not -name . -type d -prune -o -type f

find 命令将上述序列解释为:

  1. 递归查找目录path/to/the/dir
  2. 如果名称​​不是“。”并且类型是“目录”,然后跳过(-prune)它。
  3. 否则 (-o) 进入下一个条件。

如所描述的示例,请尝试修改该行:

find /cms/Oracle/Middleware/dib_common/Advices/EMAIL/ -type f -mtime +30 -maxdepth 1 -exec mv {} /cms/Oracle/Middleware/dib_common/archive/Advices/EMAIL/$name \;

作为:

find /cms/Oracle/Middleware/dib_common/Advices/EMAIL/. -not -name . -type d -prune -o -type f -mtime +30 -exec mv {} /cms/Oracle/Middleware/dib_common/archive/Advices/EMAIL/"$name" \;

【讨论】:

  • 下面现在为我工作。谢谢@tshiono,rowboat,shawn`find /cms/Oracle/Middleware/dib_common/Advices/EMAIL/。 ! -姓名 。 -prune -type f -mtime +30 -exec mv {} /cms/Oracle/Middleware/dib_common/archive/Advices/EMAIL/"$name" \;1
【解决方案2】:

下面现在为我工作。 仅更新 -not 在我的环境中也没有可用选项。

find /cms/Oracle/Middleware/dib_common/Advices/EMAIL/. ! -name . -prune  -type f -mtime +30 -exec mv {} /cms/Oracle/Middleware/dib_common/archive/Advices/EMAIL/"$name" \;

【讨论】:

    猜你喜欢
    • 2012-06-14
    • 1970-01-01
    • 2011-05-06
    • 2019-12-21
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    相关资源
    最近更新 更多