Используйте находят для выполнения ряда команд

Я не нахожу отчет об ошибках связанным с этим и следующими строками в исходном файле wc.c

    case '\t':
        linepos += 8 - (linepos % 8);

кажется, сознательно принимаю решение вести себя таким образом, вероятно, для предоставления подсказки для ширины должно было отобразить файл на экране.

Быстрая альтернатива могла быть

echo -n $'\t' | tr '\t' ' ' | wc -L
3
05.06.2011, 01:32
3 ответа

Используйте -exec опция для find как это:

find . -maxdepth 1 -name "*.bitbucket" -exec hg pull --update --repository {} \;

{} заменяется результатом находки и \; разделитель указывает, что они должны быть выполнены по одному. A + заставил бы набор их быть представленным в виде строки вместе как аргументы.

4
27.01.2020, 21:24
  • 1
    я всегда использовал \{\} думая это вызвало бы расширение удара. Почему удар не расширяется {} в этом случае? –  Deepak Mittal 03.06.2011, 23:31
  • 2
    Не имеет значения. Найденный ответом –  Deepak Mittal 03.06.2011, 23:34
  • 3
    Поскольку это пусто, нет ничего для расширения. Bash и другие оболочки только разворачивают вещи, которые они распознают, может быть превращен во что-то еще. Тот самый факт - то, что делает его идеально подходящим для заменяющей системы аргумента находки. Это вряд ли будет часть нормальные аргументы команд, потому что это - расширение ерунды, но может быть распознано и заменено соответствиями файла. –  Caleb 03.06.2011, 23:35
find . -maxdepth 1 -name "*.bitbucket" -execdir hg pull --update --repository {} +

обработает несколько файлов параллельно. Не каждая находка могла бы иметь-execdir; гну/находить предлагает использовать его для предотвращения ошибок.

0
27.01.2020, 21:24

Ответ @Caleb хорош. Или можно сделать это с xargs.

Если Вы хотите сделать, hg вещь для каждого находит результаты, (как @Caleb указал),

find . -depth 1 -name "*.bitbucket" | xargs -n1 hg pull --update --repository

Если Вы хотите накопиться, все находят результаты в одну команду, удаляют -n1.

Кроме того, быть осторожным относительно -depth. Эта опция не использует аргумента. Я думаю, что Вы имеете в виду -maxdepth.

-1
27.01.2020, 21:24
  • 1
    Это на самом деле неправильно, xargs может использоваться для выполнения вещей один за другим с помощью -n1 как аргумент. Настоящая проблема с xargs вот то, как это обрабатывает аргументы заключения в кавычки. Это может быть кошмар для разбираний в нем, где использование find … -exec … {} просто заботится о нем. –  Caleb 03.06.2011, 19:04
  • 2
    Спасибо за указание -n1 опция. Однако я не понимаю Вашу точку о заключении в кавычки аргументов. Если Вы волнуетесь о пробелах в именах файлов, --delimiter "\n" может использоваться. –  MetroWind 03.06.2011, 19:18

Теги

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