2016-03-18 3 views
1

Я новичок в xargs ..Как использовать MKDIR с xargs

я хочу использовать MKDIR с xargs, чтобы создать некоторые папки, похожие на:

for i in {1..11};do mkdir mm$i;done 

, который будет создавать папки mm1, мм2, мм2 ... mm11

я пытался:

echo {1..11}|xargs -p -n1 -I {} mkdir -p "mm{}" 

однако подскажите:

mkdir -p mm1 2 3 4 5 6 7 8 9 10 11 ?... 

я также пытался:

echo {1..11}|xargs -p -n1 mkdir -p mm 

он подскажет:

mkdir -p mm 1 ?...n 
mkdir -p mm 2 ?...n 
mkdir -p mm 3 ?...n 
mkdir -p mm 4 ?...n 
mkdir -p mm 5 ?...n 
mkdir -p mm 6 ?...n 
mkdir -p mm 7 ?...n 
mkdir -p mm 8 ?...n 
mkdir -p mm 9 ?...n 
mkdir -p mm 10 ?...n 
mkdir -p mm 11 ?...n 
mkdir -p mm ?...n 

помощь .. ТКС

+4

Не используйте 'xargs', используйте' mkdir mm {1..11} '. –

+0

tks !! Я просто использую для ........ bw интересно, что будет работать с xargs, coz sed работает таким образом, но mkdir не работает. – once

ответ

1

Ваша проблема заключается в том, что вы используете -I флаг, который требует, чтобы аргументы разделяются пустыми строками, а не пробелами:

-I replace-str 
     Replace occurrences of replace-str in the initial-arguments with 
     names read from standard input. Also, unquoted blanks do not 
     terminate input items; instead the separator is the newline 
     character. Implies -x and -L 1. 

Одно из решений заключается в создании соответствующий вход:

echo {1..11} | tr ' ' '\n' | xargs ... 

Или:

seq 11 | xargs ... 

Или, как @gniourf_gniourf предлагает в комментарии, просто использовать оболочки расширение непосредственно для данного конкретного дело.

+0

Я думал, что флаг -n помогает добавить следующую строку – once

Смежные вопросы