使用 touch 命令根据 test.txt 文件中包含的单词创建空文件

使用 touch 命令根据 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

不起作用。我不知道如何指定 test.txt 文件的前 10 个单词。

答案1

这对你有用吗?

while IFS= read -r i; do
  touch "$i".txt
done < <(head -20 filename.txt)

答案2

获得前 20 个单词。

使用

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

(和映射文件):

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

(和awk):

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

(和shell 参数扩展):

$ a=($(<a.txt)); a=(${a[@]/%/.txt}); touch ${a[@]:0:19}

答案3

xargs命令有--arg-file标志,允许使用参数来执行你打算从文件运行的命令。因此,你可以这样做

xargs --arg-file=filenames.txt touch

如果你想要前 20 行

head -n20 filenames.txt | xargs  touch

替换文件tail最后head20 行

相关内容