使用 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

相关内容