ls> filelistを使用し、ファイルリストの内容をfilelistに変更します。

ls> filelistを使用し、ファイルリストの内容をfilelistに変更します。

andを使用する必要がありますが、ls > filelist使用する場合は"cat filelist"名前の1つとしてすべての項目が表示されますが、変更する必要があります。ファイルリストだけでこれを行う方法がわかりません(該当する場合)。filelistfilelist"* * * 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つの部分に簡単に分けることができます。

  1. エコ」ファイル一覧echoはSTDIN(標準入力)に出力を印刷します(他の場所にパイプしない場合)。

  2. LS | grep -vx file list;現在のディレクトリの内容を一覧表示し、出力をgrepにパイプします。通常、私たちの場合、「grep」は与えられたキーワード(「filelist」)を含む行だけを印刷します。 -v オプションを使用すると、キーワードを含まない行を検索します。 Barmarが述べたように、「myfilelist」、「filelist2」などの「filelist」を含むファイルも除外されるため、-xを使用することをお勧めします。

  3. filelist 出力を「filelist」ファイルにリダイレクトします。 (1)と(2)は括弧で囲まれ、セミコロンで区切られているため、両方のコマンドの出力(STDINに印刷)がこのファイルにリダイレクトされます。

関連情報