Bash 从保留空白的列表创建目录

Bash 从保留空白的列表创建目录,bash,awk,whitespace,Bash,Awk,Whitespace,我有一个文件中的名字列表,我需要从中创建目录。清单看起来像 Ada Lovelace Jean Bartik Leah Culver 我需要的文件夹是完全相同的,保留空白(s)。但是 awk '{print $0}' myfile | xargs mkdir 我为每个单词创建单独的文件夹 Ada Lovelace Jean Bartik Leah Culver 同样的情况也发生在 awk '{print $1 " " $2}' myfile | xargs mkdir 错误在哪里?使用

我有一个文件中的名字列表,我需要从中创建目录。清单看起来像

Ada Lovelace
Jean Bartik
Leah Culver
我需要的文件夹是完全相同的,保留空白(s)。但是

awk '{print $0}' myfile | xargs mkdir
我为每个单词创建单独的文件夹

Ada
Lovelace
Jean
Bartik
Leah
Culver
同样的情况也发生在

 awk '{print $1 " " $2}' myfile | xargs mkdir

错误在哪里?

使用
gnu xargs
您可以使用
-d
选项将分隔符设置为
\n
。这样,您也可以避免awk

xargs -d '\n' mkdir -p < file

@birgit:try:完全基于您提供的示例输入文件

awk -vs1="\"" 'BEGIN{printf "mkdir  ";}{printf("%s%s%s ",s1,$0,s1);} END{print ""}'   Input_file | sh
  • 最后一个版本更好,因为只创建了1个子shell
  • 如果有大量文件夹(shell参数限制),可以多次循环并创建较小的命令
awk -vs1="\"" 'BEGIN{printf "mkdir  ";}{printf("%s%s%s ",s1,$0,s1);} END{print ""}'   Input_file | sh
awk '{ system ( sprintf( "mkdir \"%s\"", $0)) }' YourFile
# OR
awk '{ print"mkdir "\"" $0 "\"" | "/bin/sh" }' YourFile
# OR for 1 subshell
awk '{ Cmd = sprintf( "%s%smkdir \"%s\"", Cmd, (NR==1?"":"\n"), $0) } END { system ( Cmd ) }' YourFile