Я прочитал пост в Как я могу выполнить несколько команд при использовании find? , Если я неправильно понял предоставленный ответ, я не верю, что он обеспечивает решение, которое я ищу.
Мое требование - найти определенный набор файлов. Если найдено, то создайте каталог. Если каталог был успешно создан только тогда, чтобы извлечь файлы. После извлечения удалить исходные файлы. Как я смогу добиться этого?
-exec
для вызова сценария делать сложные вещи?-exec
например, если 0, тогда что-то сделать?Ответы:
Ссылка, которую вы публикуете, дает «правильный» ответ, на мой взгляд. Просто порождайте раковину. Без этого у вас не будет достаточно большого набора инструментов. Вы можете создать команду поиска в псевдокоде, например:
Это остановит любую ошибку, так как предикаты естественным образом объединены. Но это дает вам недостаточный контроль над наименованием каталога. Это гарантированно потерпит неудачу.
Создание оболочки решает эту проблему, так как у вас будет весь язык оболочки:
Обратите внимание, что эта версия имеет побочный эффект продолжения ошибки при любой итерации цикла - она порождает единую оболочку для всех результатов. Я бы посоветовал вызывать оболочку с флагом -e, если вы хотите решительно остановиться на любой ошибке.
источник