Опция Maxdepth не работает найти команду в Solaris

#linux #bash #shell #find

#linux #bash #оболочка #Найти

Вопрос:

Я создаю скрипт с приведенными ниже командами в 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/
  

Комментарии:

1. На справочной странице Solaris find указано, что она поддерживает эту опцию, отличную от POSIX?

Ответ №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. Если имя не «.», а тип «каталог», тогда пропустите (-сократите) его.
  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" ;
  

Комментарии:

1. Ниже работает для меня сейчас. спасибо @tshiono , rowboat , shawn `find /cms/ Oracle/ Middleware/dib_common/Советы / Электронная ПОЧТА /. ! -name . -prune -type f -mtime 30 -exec mv {} /cms/Oracle/Промежуточное программное обеспечение/dib_common/архив / Советы / ЭЛЕКТРОННАЯ почта/»$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" ;