Jump to content
Калькуляторы

Вопрос по bash

Нужно обработать архив с большим числом файлов.

С использованием * можно наткнуться на переполнение.

Поэтому использовать буду find.

Как будет лучше и правильнее сделать?

...
proc() {
echo $1
}
export -f proc
...
find . | xargs bash -i -c 'proc "$@"'

или

find . | while read file; do
 echo $file
done

 

Второй вариант симпатичнее, но у меня смутные впечатления, что это не построчная обработка, а склейка всех имен файлов в одну строку и последующая обработка по пробельным символам.

Share this post


Link to post
Share on other sites

Так -exec с функциями внутри bash-скрипта так же не работает (без экспорта), поэтому особой разницы с первым вариантом не вижу.

Share this post


Link to post
Share on other sites

Так -exec с функциями внутри bash-скрипта так же не работает (без экспорта), поэтому особой разницы с первым вариантом не вижу.

Выделите proc в отдельный скрипт.

Edited by MATPOC

Share this post


Link to post
Share on other sites

а склейка всех имен файлов в одну строку и последующая обработка по пробельным символам.

 

 

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.