alibek Posted April 5, 2016 · Report post Нужно обработать архив с большим числом файлов. С использованием * можно наткнуться на переполнение. Поэтому использовать буду find. Как будет лучше и правильнее сделать? ... proc() { echo $1 } export -f proc ... find . | xargs bash -i -c 'proc "$@"' или find . | while read file; do echo $file done Второй вариант симпатичнее, но у меня смутные впечатления, что это не построчная обработка, а склейка всех имен файлов в одну строку и последующая обработка по пробельным символам. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
MATPOC Posted April 5, 2016 · Report post find -exec Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted April 5, 2016 · Report post Так -exec с функциями внутри bash-скрипта так же не работает (без экспорта), поэтому особой разницы с первым вариантом не вижу. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
MATPOC Posted April 5, 2016 (edited) · Report post Так -exec с функциями внутри bash-скрипта так же не работает (без экспорта), поэтому особой разницы с первым вариантом не вижу. Выделите proc в отдельный скрипт. Edited April 5, 2016 by MATPOC Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
rz3dwy Posted April 5, 2016 · Report post а склейка всех имен файлов в одну строку и последующая обработка по пробельным символам. root@my-s02:~# mkdir test root@my-s02:~# cd test root@my-s02:~/test# touch "aaa bbb" root@my-s02:~/test# touch ccc root@my-s02:~/test# find . | while read file; do echo $file; done . ./aaa bbb ./ccc Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...