質問: テキストのみのファイルのファイルのリストをフィルタリングするにはどうすればよいですか? 最後のコミットを確認し、追加または変更されたファイルのリストを取得し、それらをテキストファイルのみにフィルターして、最後にエディターで開くgit openlastコマンドが必要でした。これまでのところ、私は次のことを行いました。git show --stat head read -p "open in vim tabs? (y/n)" -n 1 -r if [[ -z $reply || $reply =~ [yy] ]]; then vim -p $(git diff --diff-filter=am --ignore-submodules --name-only head^) fi ダウンフォールは、前のコミットでバイナリファイルを追加または変更すると、エディター(この場合はvim)によって開かれることです。 git diffコマンドで出力されたリストを取得してバイナリファイルを削除する方法はありますか?
回答: xargsにパイプし、grep -il ""を使用してバイナリファイルを除外できます。git diff --diff-filter=am --ignore-submodules --name-only head^ | \ xargs grep -il "" 例git openfilesコマンド#!/bin/bash git show --stat head files=($(git diff --diff-filter=am --ignore-submodules --name-only head^ | xargs grep -il "")) read -p "open ${#files[@]} files in vim tabs? (y/n)" -n 1 -r if [[ -z $reply || $reply =~ [yy] ]]; then exec vim -p ${files[@]} else exit 1 fi