我试图从100个文件中选择一列,并使用这个linux命令将它们组合在一起:
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
有什么解决办法吗?
最佳答案
您可能会收到此消息,因为命令行大小有限。我建议你试着做一个循环。这里有一个你可以做的例子——小心,因为顺序可能不是你想要的:
#!/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
)
关于linux - 使用长参数运行linux命令时文件名过长错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36659603/