我正在尝试使用包含文件名的文件在单个目录中创建不同的文件。例如,如果文件包含
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