создавать пустые файлы с помощью сенсорной команды из слов, содержащихся в файле test.txt

Я пытаюсь написать однострочную команду для создания 20 пустых файлов с именами, извлеченными из файла .txt в другой папке с тем же расширением txt.

Я пытался

for i in $(cat test.txt); do grep -w $i | touch $i.txt ; done

и

cat test.txt| while read line ; do grep $line ; touch $line.txt ; done

, а также

for filename in $(cat testfile.txt) ;  do touch head -20 $filename.txt; done

Это не работает. Я не знаю, как указать 10 первых слов файла test.txt.

2
задан 26 October 2019 в 19:08

3 ответа

Это работает на Вас?

while IFS= read -r i; do
  touch "$i".txt
done < <(head -20 filename.txt)
2
ответ дан 2 December 2019 в 01:52

Станьте первыми 20 слов.

Используя сокращение:

$ for i in $(cut -d ' ' -f1-20 a.txt); do touch $i.txt; done

mapfile):

$ mapfile -d ' ' -n 20 -t < a.txt; touch ${MAPFILE[@]/%/.txt}

awk):

$ awk '{for (i=1; i<=20; i++) {system("touch "$i".txt")}}' a.txt

расширением параметра оболочки):

$ a=($(<a.txt)); a=(${a[@]/%/.txt}); touch ${a[@]:0:19}
2
ответ дан 2 December 2019 в 01:52

xargs команда имеет --arg-file флаг, который позволяет использовать аргументы в пользу команды, которую Вы намереваетесь выполнить из файла. Таким образом можно сделать

xargs --arg-file=filenames.txt touch

Если Вы хотите сначала 20 строк

head -n20 filenames.txt | xargs  touch

Замена tail вместо head для последних 20 строк из файла

1
ответ дан 2 December 2019 в 01:52

Другие вопросы по тегам:

Похожие вопросы: