команда mv выдает слишком много аргументов в SOLARIS

#unix #solaris #mv

#unix #solaris #mv

Вопрос:

 for f in `find /app/rohith/* -type f -o -prune  -name "*.*"` ; mv $f /app/arch/; done
  

ОШИБКА:
ksh: /usr/bin/find: список аргументов слишком длинный


Примечание: -> ОС — это Solaris -> Итак, я использую prune здесь, он похож на maxdepth

Мой запрос: как переместить только файлы (не подкаталоги) из / app/ rohith/ в / app/arch/ в SOLARIS, а также не должно давать слишком много аргументов ошибка / исключение.

Ответ №1:

Попробуйте это

 find /app/rohith/* -type f -prune  -name "*.*" -exec mv {} /app/arch/ ;
  

Я не уверен, работает ли это на solaris, но в Linux это работает

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

1. Нет. Я перепробовал все это. Но, нееет ..! Не работает в SOLARIS.

2. Итак, каков результат этого cmd? Не могли бы вы вставить вывод?

3. Эта команда синтаксически корректна в Solaris, как и в Gnu / Linux, но проблема заключается в количестве файлов в /app/ rohith . В Linux это может также привести к сбою, если список файлов не соответствует среде.

Ответ №2:

Это должно сработать, если только у вас нет файлов с действительно странными именами:

 cd /app/rohith amp;amp; ls | while read name; do [ -f "$name" ] amp;amp; mv "$name" /app/arch ; done