我需要将文件夹中的所有文件合并到一个文件中
文件名为t1, t2, t3, ..., t1500
,输出文件为“all
”。
我在bash
中使用了以下命令:cat t* >> all
但它结合了序列t1, t10, t11, ...
而不是t1, t2, t3, ...
的文件
请帮忙。
答案 0 :(得分:4)
你可以尝试
cat t{1..1500} > all
如果您遇到任何涉及太长命令行的错误,可以尝试
for i in {1..1500}; do
echo "t$i"
done | xargs -n 1500 cat
一种更长但可以说更具可读性的方法,可以在多次调用cat
之间手动拆分列表:
{ cat t{1..100}
cat t{101..500}
cat t{601..1000}
cat t{1001..1500}
} > all
答案 1 :(得分:1)
矿:
find -maxdepth 1 -regextype posix-egrep -regex '.*t[[:digit:]]+$' | sort -V | xargs cat > all
或者
shopt -s extglob
printf "%s\n" t+([[:digit:]]) | sort -V | xargs cat > all
或者简单地(如果适用):
printf "%s\n" t* | sort -V | xargs cat > all
答案 2 :(得分:0)
答案 3 :(得分:0)
我想如果你正在寻找序列t1 t10 t11那么
以下应该工作:
#!/bin/bash
for file in $(ls -1 t*)
do
cat $file >> all
done
默认情况下, ls
按所需顺序列出。