Как выполнить команду PASTE с порядковым номером?

У меня есть папка с 50000 файлами (файл1, файл2 ... файл49999, файл50000), и мне нужно выполнить эту команду: вставить файл {1 .. 3000}> 1output.txt. Он отлично работает, если я вставляю его в оболочку и выполняю.

Чтобы избежать постоянного повторения порядкового номера, я попытался создать цикл for.

bash# x=1; y=3000; for i in {1..50000}; do paste file{$x..$y} > output.txt; x=$((x+3000)); y=$((y+3000)); done

Вывод:

paste file{1..3000} > 1output
paste file{3001..6000} > 2output.txt
paste file{6001..9000} > 3output.txt
paste file{9001..12000} > 4output.txt
paste file{12001..15000} > 5output.txt
paste file{15001..18000} > 6output.txt
paste file{18001..21000} > 7output.txt
paste file{21001..24000} > 8output.txt
paste file{24001..27000} > 9output.txt
paste file{27001..30000} > 10output.txt
paste file{30001..33000} > 11output.txt
....

Есть ли способ сделать это работает?

Заранее спасибо.

0
задан 8 September 2020 в 17:51

1 ответ

Расширение комментария steeldriver:

inc=3000
for ((i = 1, k = 1; i <= 50000; i += inc, k += 1)); do
  readarray -t files < <(seq -f "file%.0f" $i $((i + inc)))
  paste "${files[@]}" > "${k}output.txt"
done
1
ответ дан 8 September 2020 в 14:52

Другие вопросы по тегам:

Похожие вопросы: