2016-01-06 2 views
-1

Я проверил некоторые ресурсы, но все еще трудно найти ключ к интерпретации кодов.Команды интерпретации bash

$ find . -iname "*.dwp" -exec bash -c 'mv "$0" "${0%\.dwp}.html"' {} \;
$ find . -name ".DS_Store" -exec rm {} \;

Чтобы быть более точным, чем разница между -iname и -name? А что символизирует «-c» и «%»?

Можете ли вы интерпретировать две команды немного для меня?

+3

[Руководство для Findutils] (http://www.gnu.org/software/findutils/manual/html_mono/find.html), (в частности [шаблоны базовых имен] (http://www.gnu.org/software /findutils/manual/html_mono/find.html#Base-Name-Patterns)), [Bash invocation] (https://www.gnu.org/software/bash/manual/html_node/Invoking-Bash.html), [ расширение параметра оболочки] (https://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion) –

+0

Спасибо! Я прочитаю это! :) – Penny

ответ

1

Первый:

  • -iname "*.dwp", указывают на команду find найти файлы, имя которых соответствует шаблону *.dwp, игнорировать регистр и т.д .: ./a.dwp
  • -exec expression {} \; часть, выполнить команду bash -c 'mv "$0" "${0%\.dwp}.html"' {}. {} будет заменен на путь каждого файла. Выражение завершается точкой с запятой. Если в текущем каталоге есть файл a.dwp, будет выполнен bash -c 'mv "$0" "${0%\.dwp}.html"' a.dwp.

    bash -c 'mv "$0" "${0%\.dwp}.html"' {}: 
    
    • -c средство команды чтения из строки, не запускать интерактивную оболочку.
    • $0 - это аргумент команды a.dwp в этом примере.
    • ${0%\.dwp}.html манипуляция строки, % удаляет самый короткий матч с конца, так что для a.dwp, удалить .dwp с конца, чтобы получить имя файла a без расширения.

    Таким образом, команда mv a.dwp a.html.

Второй, очень простой, если вы понимаете первый.

+0

Большое спасибо! – Penny

Смежные вопросы