lsコマンドで生成されたすべてのファイルを開くにはどうすればよいですか?

lsコマンドで生成されたすべてのファイルを開くにはどうすればよいですか?

テキストエディタを使用してlsコマンドで生成されたすべてのテキストファイルを開きたいです。どうすればいいですか?

ベストアンサー1

ザイルズは絶対に正しいls非常に悪い例です。ファイル名のグローバル拡張は、!を使用せずにコマンドラインではるかに簡単に実行できるためですls。いわゆる「テキストファイル」にそのファイルを識別できるファイル拡張子がある場合は、次のことができます。

editor-command *.txt

技術を実証するために、ファイル名のマッチングだけでは実行できないより複雑な例を使用し、名前だけではなくコンテンツに基づいてファイルを開いてみましょう。 「content-type」文字列を含むすべてのファイルを開きたいとします。

エディタが複数のファイル名を受け入れ、それを別々のバッファで一度に開くか、順番に処理すると仮定すると、以下を簡単に実行できます。

editor-command $(grep -i content-type)

それでは、元の質問に戻り、名前に基づいたテキストファイルかどうかを知らないとしましょう。その後、他のプログラムを使用してそのデータに基づいて識別して開く必要があります。プログラムはfile特定のファイルの種類を知らせます。リストを検索してテキストファイルのみを検索し、次のように一致するファイル名のみを開くことができます。

editor-command $(file -ni * | grep 'text/plain' | cut -d: -f1)

コンフィギュレーション内のコマンドチェーン出力は$()エディタの引数として使用されます。私は時々2段階でこれを行います。ファイルセットを見て、「content-type」文字列を含む各xmlファイルのリストを取得したとします。

find -type f -iname '*xml' | xargs grep -Hi 'content-type' |  cut -d: -f1

...そして開いてみることにしました。次に、最後のコマンド履歴ショートカットを使用して、次の操作を行います。

vim $(!!)

...私のお気に入りのエディタ、vimで前のコマンドのすべての結果を開きます。

xargsエディタが一度に1つのファイルのみを受け入れてエディタを作成する必要がある場合、またはループのバリエーションを使用する必要がありforます。jmtdの答えstdioが必要な端末ベースのエディタを使用しているかどうかによって異なります。

おすすめ記事