grep の検索結果でファイル名出力の指定

grep の検索結果でファイル名出力の指定

通常、コマンドでつかうぶんには気にならない
grep の検索結果

しかし、スクリプトにして処理するときには
ルール作っておくと便利

複数ファイルが該当すると
grep コマンドはファイル名まで出すけど
対象が1つの場合は出力しない

例えば

sudo grep key /etc/ssh/*config

を実行すると

/etc/ssh/sshd_config:#HostKey /etc/ssh/ssh_host_key
/etc/ssh/sshd_config:#HostKey /etc/ssh/ssh_host_rsa_key
/etc/ssh/sshd_config:#HostKey /etc/ssh/ssh_host_dsa_key
/etc/ssh/sshd_config:# Lifetime and size of ephemeral version 1 server key
/etc/ssh/sshd_config:#PubkeyAuthentication yes
/etc/ssh/sshd_config:#AuthorizedKeysFile	.ssh/authorized_keys
/etc/ssh/sshd_config:# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
/etc/ssh/sshd_config:# Change to no to disable s/key passwords

というようにファイル名まででる

でも結果にファイル名を入れたくないのなら

sudo grep -h key /etc/ssh/*config

というように
grep に -h オプションをつける

逆に、通常は対象ファイルが1つの場合は
ファイル名はでないけど
処理のためにはファイル名が必要
というのなら
-H オプションをつける

sudo grep -H key /etc/ssh/*config

すると


/etc/ssh/sshd_config:#HostKey /etc/ssh/ssh_host_key
/etc/ssh/sshd_config:#HostKey /etc/ssh/ssh_host_rsa_key
/etc/ssh/sshd_config:#HostKey /etc/ssh/ssh_host_dsa_key
/etc/ssh/sshd_config:# Lifetime and size of ephemeral version 1 server key
/etc/ssh/sshd_config:#PubkeyAuthentication yes
/etc/ssh/sshd_config:#AuthorizedKeysFile	.ssh/authorized_keys
/etc/ssh/sshd_config:# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
/etc/ssh/sshd_config:# Change to no to disable s/key passwords

というようにファイル名も表示される

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です