Как заставить Cygpath принимать входные данные из файла

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

У меня есть ряд c-файлов, которые мне нужно проверять по одному примерно в 100 подкаталогах, каждый из которых называется balance.d, balance.c или balancer.c. Я получил их список, используя find . -name "balance*"и я могу выбрать один из тех, кто использует sed -n [NUM]p, Это среда Windows, использующая Cygwin, и все эти каталоги передаются через Dropbox другим людям. Пути часто вовлекают места, и я сталкиваюсь с проблемой.

Я знаю, что cygpath -sw даст мне пути без пробелов. Моя конечная цель - получить каждый файл по одному с gcc path/to/file.c -o ./a.exe

Прямо сейчас у меня есть

cygpath -sw $ (echo find. -name "balance *" | sed -n 2p | awk '{gsub (/ /, "\")} 8')

... но cygpath не пройдет мое пространство. Это дает мне ошибку

awk: cmd. line:1: warning: escape sequence `\ ' treated as plain ` '

1 ответ

Решение

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

Также то, что вы делаете с частью AWK, не требуется.

Вы звоните echo команда со следующими аргументами:

[find] [.] [-name] [balance*]

Как вы хотите, чтобы она вызывала команду find:

cygpath -sw "$(find . -name "balance*" | sed -n 2p)"
Другие вопросы по тегам