我正在尝试编写一行命令来创建 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
最后head
20 行