我尝试从100个文件中提取一列,然后使用下面的linux命令将它们组合在一起:cut:
paste <(cut -f 5 file_1.tsv) <(cut -f 5 file_2.tsv) <(cut -f 5 file_3.tsv) ... <(cut -f 5 file_100.tsv) > combined.tsv我得到了这个错误:
File name too long有什么建议如何解决这个问题吗?
发布于 2016-04-16 16:55:45
您可能会收到此消息,因为命令行大小是有限的。我建议你试着用循环来做。这里有一个你可以做的例子-当心,因为订单可能不是你想要的:
#!/bin/bash
echo "" > combined.tsv
#build your file list
find . -name "file*tsv" |sort -k1 > list_files.lst
#the process the list
while read x ; do
x=`basename ${x}`
paste <(cat combined.tsv) <(cut -f 5 ${x} ) > combined${x}.tsv
mv combined${x}.tsv combined.tsv
done< list_files.lst
#you do not need it anymore
rm list_files.lst(这将放在一个文件中,例如myscript.sh,然后是chmod +x myscript.sh,然后像下面这样运行它
./myscript.sh)
https://stackoverflow.com/questions/36659603
复制相似问题