我试图从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/

10-13 05:34