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

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

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

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

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

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

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

Teak ★★★★★ ()

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

Где-то так:

find /mnt/cdrom -name '*' -exec /bin/bash -c 'cp -v "{}" /dev/null; let SumErr=$SumErr+$?' \;

sdio ★★★★★ ()
Ответ на: Re: Несколько команд в -exec у find от sdio

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

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

Teak ★★★★★ ()

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

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

rudchenkos ()

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

find -type f -exec bash -c "cp {} /dev/null || printf 1" \; 2>/dev/null|wc -m

anonymous ()

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

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

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