我正在使用此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
有任何建议如何解决这个问题?
答案 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
)