GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでテキストファイルの行にちなんで名付けられたファイルを作成する方法

list.txt があるとします このように:

file 1
file 2
file 3

あなたが望むものを達成することができます:

while read FILE; do touch "${FILE} some string"; done < list.txt

ファイル list ができました 以下を含む:

this
that
the-other

そのファイルの各行に対して、その行に指定された名前のファイルを作成します。これはとても簡単です – 各行が 1 つの単語だけで構成されている場合のみ:

cat list | xargs touch --

(-- touch に伝えます それ以降を引数として解析しようとしないでください。 -this のようなファイル名がある場合は、それなしで 、先頭の - touch を混乱させて、't'、'h'、'i'、および 's' は、実際のファイル名の一部ではなく、引数として意味されていると考えてしまいます。)

これは処理された単純なケースですが、あなたが求めたものではありません。ファイル名に list の行で指定された内容以外のテキストを含めたい場合 、事態はさらに複雑になります。 xargs はそのような補間を行うことができません。代わりに、次のようなものが必要になります (シェルが bash である必要があります)。 、ほとんどのシステムで標準です):

for file in `cat list`; do touch -- $file-customtext; done

これは、各行が単一の単語のみで構成されている場合にのみ機能することに注意してください。このコマンドでは、$file list の特定の行で指定されたファイル名に置き換えられます;その周りのすべてが文字どおりに解釈されるため、このコマンドは list 上記の内容は、次のファイルを作成します:

this-customtext
that-customtext
the-other-customtext

もちろん、「-customtext」を好きなものに置き換えることができます。また、プレフィックスとサフィックスを使用することもできます。代わりに do touch -- some-$file-text があった場合 、たとえば、同様に機能し、some-this-text という名前のファイルが生成されます &c.

では、list の内容を想定すると、 特に、スペース、単語以外の文字、またはシェルが適切に解釈しないその他のものが含まれているためです。この場合に何を勧めるかを 3 人に尋ねると、おそらく 5 つの答えが得られるでしょう。私は Perl ハッカーなので、答えは Perl です。具体的には、list と仮定しましょう 以下を含む:

This is the first line
of three (three?) lines
in the list file.

これを行う方法は次のとおりです:

cat list | perl -ne'chomp; system(qq|touch -- "custom $_ text"|)'

結果のファイルを生成します:

custom This is the first line text
custom of three (three?) lines text
custom in the list file. text

この場合のカスタム テキストは、" が含まれていない限り、スペースなど何でも構いません。 (これは touch を混乱させます ) も ' (これは perl を混乱させます ); Perl コマンドでは、$_ list からの特定の行の内容を表します 、およびカスタム テキストはその前または後に属しますが、二重引用符内にあります。 (二重引用符の外側のカスタム テキストは touch によって認識されます touch の原因となるものが含まれていない限り、文字通り作成される別のファイル名として エラーになります。)


Linux
  1. Linuxでテキストファイルに行番号を追加する方法

  2. Linuxシェルスクリプトを使用してテキストファイル内の一意の行のリストを生成する方法は?

  3. Linux でフル パスを含むファイルを一覧表示するにはどうすればよいですか?

  1. Linuxでスワップを作成する方法

  2. Linuxでスワップファイルを作成する方法

  3. LKM を使用して C プログラムで Linux proc ファイルを作成する方法

  1. 「dd」コマンドを使用して Linux でスパース ファイルを作成する方法

  2. Linux でファイルを tar および untar し、tar ファイルの内容を表示する方法

  3. Linuxでテキストファイルからバイナリを見分ける方法