Создайте несколько файлов, используя файл, содержащий имена файлов, с помощью bash

Создайте несколько файлов, используя файл, содержащий имена файлов, с помощью bash

Я пытаюсь создать разные файлы в одном каталоге, используя файл, который содержит имена файлов. Например, если файл содержит

file1,file2

в каталоге будут созданы два файла file1.md и file2.md.

Я использую команду 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

Связанный контент