我在一个名为的文件中有一个如下所示的列表names.txt:
JOHN DOE
JANE DOE
ADAM SMITH
SARAH BROWN
SUSIE JOHNSON
Run Code Online (Sandbox Code Playgroud)
是否有我可以在终端中运行的脚本,该脚本将从该列表中的每一行创建文件夹?
有一种简单的方法可以为文本文件的每一行运行一个命令,并且它不需要脚本,而脚本对于像mkdir. 使用这样的xargs命令:
xargs -tI % mkdir % < names.txt
Run Code Online (Sandbox Code Playgroud)
该-I选项告诉xargs从STDIN. 在这种情况下,STDIN 来自读取names.txt带有< names.txt. 该%字符是一个替换字符串,xargs用作文件中一行的占位符。这意味着在命令中xargs看到%的任何地方%都被文件中的一行替换。
该-t选项导致xargs在执行之前打印每个命令。这不是必需的,但它可以帮助解决更复杂的问题。
当xargs运行带有示例文件,输出如下:
mkdir 约翰·多伊 mkdir 简·多伊 mkdir 亚当·史密斯 mkdir 莎拉·布朗 mkdir 苏西约翰逊
并且这些mkdir命令使用文件中的名称创建一个新文件夹names.txt。