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

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

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


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

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


person Rohith    schedule 18.10.2016    source источник


Ответы (2)


Попробуй это

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

Я не уверен, что это работает на Solaris, но на Linux работает.

person slavik    schedule 18.10.2016
comment
Нет. Я пробовал все это. Но, Неееет..! Не работает на СОЛЯРИС. - person Rohith; 19.10.2016
comment
Итак, каков результат этого cmd? Не могли бы вы вставить вывод? - person slavik; 19.10.2016
comment
Эта команда синтаксически корректна в Solaris, как и в Gnu/Linux, но проблема заключается в количестве файлов в каталоге /app/rohith. Это также может привести к сбою под Linux, если список файлов не подходит для среды. - person jlliagre; 19.10.2016

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

cd /app/rohith && ls | while read name; do [ -f "$name" ] && mv "$name" /app/arch ; done
person jlliagre    schedule 19.10.2016