.txtファイルの行を使用してファイルを作成するには?

.txtファイルの行を使用してファイルを作成するには?

たとえば、fileNames.txtというファイルがあります。 cat >fileNames返品

abet

able

abacus

ファイル名を使用してabet、able、a​​bacusを.txtファイルにする方法は?猫とタッチでパイプを使ってみました。

答え1

これを行うには、次のようないくつかの方法があります(GNU仮定xargs)。

sed -e '/^[[:space:]]*$/d' -e 's/$/.txt/' fileNames.txt | xargs -rd '\n' touch --

fileNames.txt の各行にはファイル名が 1 つしかないとします。スクリプトsedは空の行を削除し(@rubynorailsに感謝します)、各ファイル名の末尾に「.txt」を追加してから.txtに接続しますxargs touch

これを使用して、-d '\n'xargs(スペースではなく区切り文字で改行または '\ n'のみを使用して引用符の処理を無効にするように指示するGNU拡張)の名前(改行文字を除く)と一緒にオプションを指定します。たとえば、行に「abetable」が含まれていて含まれていない場合、2つのファイルが作成されます(および)。これを使用すると、1つのファイルのみが生成されます。xargs\n-d '\n'abetable.txtabet able.txt

答え2

読み取りコマンドを使用して、whileループで入力リダイレクトを使用できます。

while read line; do
    touch "${line}.txt"
done < fileNames.txt

答え3

awk 'NF>0' fileNames.txt | while read line; do touch "${line}.txt"; done

このawkコマンドは空行のみを削除します。

私が知る限り、その行は文字通りなので、その行の内容はすべてファイル名に書き込まれます。

関連情報