Похожие вопросы

Как сделать копию файла в том же каталоге
Используйте команду "найти" для поиска PNG-файлов, вывода канала в imagemagick для пакетного преобразования
Как chmod все папки рекурсивно исключая все папки в определенной папке?
Разница между grep-l и find в UNIX
Показать все.файлы htaccess на mac
Можно ли найти физическое расположение принтера в здании по его IP адресу?
Notepad++ Удалить Шаблон Новой Строки-Найти И Заменить Команду?
Создание сценария BASH " для " обрабатывать имена файлов с пробелами (или обходной путь)
Логическое AND и OR с grep
Unix delete with find: удалить все файлы, перечисленные в файле
Как копировать файлы с помощью ditto с обратными косыми чертами в именах файлов
найдите xargs и curl выдаст ошибку с опцией - C
Как использовать регулярные выражения lookahead и lookbehind в Linux с помощью find?
Как я могу сохранить подсветку матча grep, когда трубопровод находит в grep?
Отображение сведений о файле (размер, дата и т. д.) из Linux команда" locate"?

Как я могу выполнить несколько выражений, используя опцию-exec в Linux с помощью команды find?

Я прочитал сообщение в Как выполнить несколько команд при использовании find?. Если я неправильно понял ответ, я не верю, что он обеспечивает решение я ищу.

мое требование-найти определенный набор файлов. Если найдено, чтобы затем создать каталог. Если каталог был успешно создан только тогда для извлечения файлов. После извлечения, чтобы удалить исходные файлы. Как я смогу этого добиться?

5
задан Community
источник

1 ответов

ссылка, которую вы публикуете, дает "правильный" ответ, на мой взгляд. Просто породи скорлупу. Без этого у вас не будет достаточно большого набора инструментов. Ты может построить команду поиска в псевдокоде, например:

find /path -criteria -exec mkdir {} \; -exec extract {} \; -exec rm {} \;

это остановится на любой ошибке, так как предикаты естественно объединены. Но это дает вам недостаточный контроль над именованием каталога. Это гарантированно провалится.

нерест оболочки разрешает это, поскольку у вас будет все язык оболочки в вашем распоряжении:

find /path -criteria -exec /bin/sh '
    for d; do
        mkdir "${d##*/}" && tar xvf "$d" && rm "$d"
    done' _ {} +

обратите внимание, что эта версия имеет побочный эффект продолжения ошибки для любой заданной итерации цикла - она порождает одну оболочку для все результаты. Я бы предложил создать оболочку с флагом-e, если вы хотите остановить любую ошибку.

3
отвечен falconindy 2012-09-25 04:01:45
источник

Другие вопросы find linux