LINUX.ORG.RU

Несколько команд в -exec у find


0

0

Здравствуйте!

Можно ли у find в параметре -exec задать не одну команду а целый ряд команд.

Например - проверка диска:
find /mnt/cdrom -name '*' -exec cp -v '{}' /dev/null ';'

выполняется команда
cp -v '{}' /dev/null
а хочется:
cp -v '{}' /dev/null; let SumErr=$SumErr+$?
чтобы в конце написать, об ошибках при чтении файлов

anonymous

Несколько команд - не проблема (просто несколько exec'ов), а вот let - проблема, потому что это не команда. exec вызывает настоящие программы, а не builtin'ы шелла, о которых он ничего не знает.

Выставлять $? он тоже не станет, он возвращает её по-своему, а не просто отдаёт статус последней команды.

Анонимус, боюсь что ты вообще в принципе не понимаешь, как работает шелл. Это очень плохо.

Что касается твоей конкретной задаче. find /mnt/cdrom -type f -print0 |xargs -0 cat >/dev/null

А ошибки и так в stderr улетят, не сомневайся.

Teak ★★★★★
()
Ответ на: комментарий от sdio

И чего ты добьёшься этим let? Того, что в каждом дочернем процесс переменная SumErr будет равна нулю или единице, а после окончания find мы этого всё равно не увидим?

Teak ★★★★★
()
Ответ на: комментарий от Teak

Да я на команды и не смотрел :-)
Прочитав вопрос, понял, что автор ищет решение как запустить в -exec сразу несколько команд.

sdio ★★★★★
()
Ответ на: комментарий от sdio

> Да я на команды и не смотрел :-)

А надо бы. :)

Teak ★★★★★
()

создай скриптик и внутри него юзай что хочешь (встроенные команды bash).
в exec, естесственно, указывай скрипт.

rudchenkos
()
Ответ на: комментарий от anonymous

Вернее: find -type f -exec bash -c "cp '{}' /dev/null || printf 1" \; 2>/dev/null|wc -m

anonymous
()
Ответ на: комментарий от Teak

>Оно конечно, но 1. Зачем?

А, ну, в общем, да :)

>Как там насчёт файлов с пробелами и прочей дрянью в именах?

Апострофы?

kosmonavt
()
Ответ на: комментарий от kosmonavt

>Апострофы?

причем только одинарные

anonymous
()

диск можно и ДД проверить есль он битый то получишь от ДД ошибку чтения и не надо все так усложнять

AleX ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.