私は、特定のディレクトリ内のすべてのファイルの最初の数行をリストする、とてもシンプルなbashスクリプトを作成しようとしています。ディレクトリは引数で指定する必要があります。 私はGrepコマンドを使うべきだと思いますが、どうしたらよいか分かりません。ディレクトリ内のすべてのファイルの最初の数行を表示します。
私の既存のスクリプトはまったく動作していないようですので、ここに入れても大丈夫です。
私は、特定のディレクトリ内のすべてのファイルの最初の数行をリストする、とてもシンプルなbashスクリプトを作成しようとしています。ディレクトリは引数で指定する必要があります。 私はGrepコマンドを使うべきだと思いますが、どうしたらよいか分かりません。ディレクトリ内のすべてのファイルの最初の数行を表示します。
私の既存のスクリプトはまったく動作していないようですので、ここに入れても大丈夫です。
for file in dir/*; do
echo "-- $file --"
head "$file"
echo
done
使用headコマンド:
head -3 /path/to/dir/*
bashがデフォルトでファイル名展開(グロブ)を行いますので、あなたは自分のシェルが入力を拡張し、ヘッドが残りをやらせるさせることができます:
head *
*ワイルドカードは、作業ディレクトリ内のすべてのファイル名に展開されます。 zshでは、タブを押したときにコマンドラインを自動完成すると、これをうまく見ることができます。
-n引数を使用して行数をheadに変更できます。あなたは再帰的にこれをしたい場合は
:
find . \! -type d -exec head '{}' +
をあなたは.txt
で終わるすべてのファイルの最初の数行をしたい場合は、のために
head *.txt
または
head --lines=3 *.txt
を試してみてください任意の答えhead
と*
を使用して、リダイレクト次のようなエラーが表示されないようにするには、stderrを/ dev/nullに設定してください。
head: error reading ‘tmp’: Is a directory
試してみてください: 'head -n 5 *' – pfnuesel