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

Я пытаюсь связать все файлы. 112]

1
задан 16 January 2012 в 21:15

3 ответа

Это должно работать:

ls -1 folder/*.o | grep -v main.o | xargs -I{} g++ {} -o bin

Объяснение:

  • ls -1 folder / *. O -> перечислить все файлы .o (по одному в строке) в папке папки

  • grep -v main.o -> исключить main.o из списка

  • xargs -I {} g ++ {} -o bin -> выполнить " файл g ++ -o bin "

0
ответ дан 16 January 2012 в 21:15

Вы должны использовать make-файлы, или даже лучше автоинструментальные средства, но вы можете сделать что-то вроде этого:

ls folder/ | grep "*.o" | grep -v "main.o" | while read -r file; do g++ $file -o bin; done

На этот вопрос лучше было бы ответить в любом случае, связанном с bash, хаха.

0
ответ дан 16 January 2012 в 21:15

Попробуйте g++ *.o $( echo folder/*.o |tr ' ' "\n" | egrep -v folder/main.o ), предполагая, что ни у одного из folder/*.o нет ПРОСТРАНСТВ в их именах.

Вот как это работает:

echo folder/*.o создает разделенный пробелами список имен файлов с каталогом.
tr ' ' "\n" заменяет все пробелы на новые строки (давая нам одно имя файла на строку, что делает egrep счастливым.
egrep -v folder/main.o удаляет нежелательное имя файла из этого списка.
$() помещает остальные имена файлов в командную строку. Так как $IFS по умолчанию использует SPACE, TAB, NEWLINE, нам не нужно tr возвращать их обратно в пробелы.

0
ответ дан 16 January 2012 в 21:15

Другие вопросы по тегам:

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