Перейти к содержимому
Калькуляторы

Вопрос по bash

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

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

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

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

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

или

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

find -exec

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Изменено пользователем MATPOC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.