从列表中创建保留空格的目录

时间:2017-03-13 07:14:34

标签: bash awk whitespace

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

Ada Lovelace
Jean Bartik
Leah Culver

我需要文件夹完全相同,保留空格。但是

awk '{print $0}' myfile | xargs mkdir

我为每个单词创建单独的文件夹

Ada
Lovelace
Jean
Bartik
Leah
Culver

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

错误在哪里?

3 个答案:

答案 0 :(得分:3)

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

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

如果您没有gnu xargs,那么您可以先使用tr将所有\n转换为\0

tr '\n' '\0' < file | xargs -0 mkdir

答案 1 :(得分:2)

@birgit:尝试:完全基于您提供的示例Input_file。

awk -vs1="\"" 'BEGIN{printf "mkdir  ";}{printf("%s%s%s ",s1,$0,s1);} END{print ""}'   Input_file | sh

答案 2 :(得分:2)

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 
  • 由于只创建了1个子shell,因此最新版本更好。
  • 如果有大量文件夹(shell参数限制),您可以多次循环并创建较小的命令