だから私は初心者であり、来週プロジェクトの締め切りがあります。#!/bin/bash
最初の行に含まれるファイルのファイル名のみを印刷する必要があります。これまで私はこれを試しました
head -n 1 $filename | grep -l "pattern"
ただし、代わりに実行するとファイル名が表示されます。
(standard input)
前述したように、私は初心者であり、これまでは簡単なコマンドに慣れています。だから私がどこを台無しにしているのか、awk
。
for fis in find -perm -a+x -name "*.sh" -type f
do
head -n 1 $fis | grep -l "#!/bin/bash"
done
ベストアンサー1
GNUでは、入力がstdinから来る場合、grep
オプションを使用してラベル/ファイル名を設定できます。--label
-exec
コマンドの置き換えで外部ループを使用する代わりに、この操作を使用してファイル名を繰り返し、コマンドを実行する小さなスクリプトを起動できます。
find -perm -a+x -name "*.sh" -type f -exec sh -c '
for fis; do
head -n1 "$fis" | grep --label="$fis" -Fl "#!/bin/bash"
done
' sh {} +
固定文字列を探しているので、その-F
オプションを追加しました。grep