
Моя цель — получить список файлов, которые были изменены в git
, а затем запустить rspec
команду, передавая каждый файл в качестве аргумента.
На данный момент у меня есть:
$ git status -s | awk '{if ($1 == "M") print $2}' | tr "\\n" "\\0" | \
xargs -0 -I % rspec -f documentation %
Технически это работает, но это выполняется rspec
для каждого измененного файла, я хочу, чтобы это выполнялось:
$ rspec path/to/file/1 path/to/file/2 ...
Кто-нибудь знает, как этого добиться?
решение1
... | xargs -0 rspec -f documentation
Обратите внимание, что это может вызываться rspec
несколько раз, если командная строка будет слишком длинной. Это не проблема, rspec
так как причина вызывать его один раз — производительность, но не используйте его для чего-то, xargs -0 tar cf archive.tar
где любой второй, третий, ... запуск создаст архив, перезаписывающий вывод предыдущих запусков.