bashを使用してファイル名を含むファイルを使用して複数のファイルを作成する

bashを使用してファイル名を含むファイルを使用して複数のファイルを作成する

ファイル名を含むファイルを使用して、1つのディレクトリに異なるファイルを作成しようとしています。たとえば、ファイルに

file1,file2

ディレクトリに file1.md と file2.md という 2 つのファイルが作成されます。

コマンドを使用していますtouch {$(cat file)}.mdが、これは単一のファイルfile1、file2.mdを作成します。

答え1

次のようにしてカンマを改行に置き換えtr、その結果を配列に読み込むことができます。

mapfile -t fnames < <(tr ',' '\n' < file)
touch "${fnames[@]/%/.md}"

パラメータ展開により、${fnames[@]/%/.md}各配列要素の末尾 ( %) がサフィックス に置き換えられます.md

答え2

カンマを改行に変換してファイル名を読み取ります。

sed 's/,/\n/g' file | while read fileName; do touch "$fileName".md; done

または:

tr , '\n' < file | while read fileName; do touch "$fileName".md; done

答え3

次のようなことを試すことができます:

tr ',' '\n' < file | xargs -0 -I {} touch {}.md

関連情報