Я пытаюсь создать разные файлы в одном каталоге, используя файл, который содержит имена файлов. Например, если файл содержит
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