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 ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.