/ binディレクトリで「c」で始まるファイル数を計算するために、Linuxシェルにコマンドを作成しました(合計8つ)。
find /bin/[c]* -type f | wc -l
今やりたいことは、最初の7つのファイルの名前をテキストファイルに保存することですが、パイプラインに参加するのに適したコマンドを見つけることができません。
答え1
find /bin/[c]* -type f | head -n 7 > textfile
答え2
アルファベット順に最初の7つを意味する場合は、次のようになりますzsh
。
printf '%s\n' /bin/c*(.[1,7]) > list.txt
意味するなら
- 7番目、
Om
glob修飾子を追加(c*(.Om[1,7])
) - 最新の7つ、
om
グローバル修飾子を追加 - 最小の7つ:
oL
- 最大7個:
OL
find /bin/[c]*
シェルはglobを展開し、結果ファイル(アルファベット順にソート)を別の引数として渡しますfind
。
これらのファイルのいずれかがディレクトリの場合は、そのfind
ファイルを掘り下げて内容を一覧表示し始めます(指定されていない順序で)。
あなたが望むもの:
find /bin/c* -prune -type f | head -n 7 > file.txt
どこのディレクトリにも入る-prune
ことはできません。find
ただしhead
、このアプローチを使用することは、ファイル名に改行文字が含まれていない場合にのみ機能します(この場合は一般的ですが、/bin
一般的な場合は保証されません)。