运行带有长参数的linux命令时,文件名太长错误

时间:2016-04-16 02:50:16

标签: linux paste cut

我正在使用此linux命令尝试cut 100个文件中的单个列和paste个列:

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

有任何建议如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您可能会收到此消息,因为命令行大小有限。我建议你尝试用循环来做。以下是您可以做的一个示例 - 请注意,因为订单可能不是您想要的:

#!/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