我正在尝试从 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/