andを使用する必要がありますが、ls > filelist
使用する場合は"cat filelist"
名前の1つとしてすべての項目が表示されますが、変更する必要があります。ファイルリストだけでこれを行う方法がわかりません(該当する場合)。filelist
filelist
"* * * File List * * *"
filelist
答え1
ls > /tmp/filelist
echo "* * * File List * * *"
cat /tmp/filelist
リストされている項目がないと仮定した/tmp
場合は、次の/tmp
ように変更します。/var/tmp
答え2
あなたはできます:
ls | grep -vx filelist > filelist
この-v
オプションを使用すると、出力で一致する行を除いて行-x
全体と一致します(したがってスキップしませんotherfilelist
)。
答え3
Unixコマンドは非常に簡潔で、ランダムパイプラインでより使いやすくするためにヘッダー/フッターまたは無関係な詳細で出力を装飾しません。このようなものを追加するのはとても簡単です。
(echo '* * * This is a header * * *'; ls ; echo --* footer *--) > filelist
答え4
より深い理解のために、コマンド全体を3つの部分に簡単に分けることができます。
エコ」ファイル一覧echoはSTDIN(標準入力)に出力を印刷します(他の場所にパイプしない場合)。
LS | grep -vx file list;現在のディレクトリの内容を一覧表示し、出力をgrepにパイプします。通常、私たちの場合、「grep」は与えられたキーワード(「filelist」)を含む行だけを印刷します。 -v オプションを使用すると、キーワードを含まない行を検索します。 Barmarが述べたように、「myfilelist」、「filelist2」などの「filelist」を含むファイルも除外されるため、-xを使用することをお勧めします。
filelist 出力を「filelist」ファイルにリダイレクトします。 (1)と(2)は括弧で囲まれ、セミコロンで区切られているため、両方のコマンドの出力(STDINに印刷)がこのファイルにリダイレクトされます。