Назад | Перейти на главную страницу

Как отфильтровать список файлов, переданных в xargs?

Моя команда: git show --pretty="format:" --name-only возвращает список файлов. Затем я использую xargs для запуска сценария оболочки для этих файлов:

git show --pretty="format:" --name-only  | xargs -i phpmd $dir/'{}' text codesize,unusedcode,naming

Однако я бы хотел запустить эту команду xargs только для файлов с .php расширение. Как отфильтровать ненужные файлы?

... | grep '\.php$' | ...

Если ваши имена файлов могут содержать пробелы или кавычки, вам следует использовать GNU Parallel http://www.gnu.org/software/parallel/ вместо xargs, поскольку xargs может привести к неприятным сюрпризам из-за проблемы с разделителем http://en.wikipedia.org/wiki/Xargs#The_separator_problem:

git show --pretty="format:" --name-only  | grep '\.php$' | parallel phpmd $dir/{} text codesize,unusedcode,naming

GNU Посмотрите вводное видео о GNU Parallel, чтобы узнать больше: http://www.youtube.com/watch?v=OpaiGYxkSuQ