Как сохранить отсортированные файлы в отдельном каталоге?

amrecover задуман как интерактивный скрипт, поэтому традиционно для его автоматизации можно использовать expect. Эту утилиту tcl можно настроить для проверки диалога на наличие двух стилей приглашения (amrecover> и Продолжить? [Да/нет]:) и ответа на их по-разному. Например, создайте файл myrecover в PATH, сделайте его исполняемым (chmod +x myrecover) и поместите в него следующее:

#!/usr/bin/expect
spawn amrecover my_Config 
expect   -ex {Continue? [Y/n]:}  { send "y\r"; exp_continue } \
         -ex {amrecover>}        { gets stdin input; 
               if ![eof stdin] { send $input; send "\r"; exp_continue } }
close
wait

Затем запустите его как

./myrecover </home/me/thatScript

Сценарий expect разветвляется и запускает вашу команду amrecover my_Config, подключаясь к ней через pty, а затем прослушивает ввод в поисках двух подсказок. Когда появляется обычное приглашение amrecover>, мы читаем строку из стандартного ввода сценария expect, т.е. ваш набор команд, и (если мы не получили end-of- файл) отправьте эту строку в программу с новой строкой (\r преобразуется в это). exp_continue снова запускает цикл команд для следующего совпадения приглашения. В конце файла мы закрываем соединение с программой и ждем ее выхода.

Имейте в виду, что запуск amanda таким образом может привести к хаосу, если запрос на продолжение будет вызван каким-то исключительным состоянием и т.д.

0
15.12.2018, 19:04
3 ответа

Это команда, которая вам нужна, если вы хотите объединить эти файлы по порядку. Используйте распорку .

cat anacovis2_{1..2181}_summary_betai_reg.out_new >> one_file
4
28.01.2020, 02:14

Вы можете использовать псевдоним:

alias ls='ls -1v'
1
28.01.2020, 02:14

В zshвы бы сделали:

files=(*.out_new(n))

(n)является квалификатором glob, который приводит к числовой сортировке глобуса (, также можно переключать глобально для всех глобусов с помощьюset -o numericglobsort).

А потом:

do-something-with $files

В bash, ksh93илиmksh(илиzsh)вы можете хранить файлы, перечисленные этим GNU lsв массиве с:

eval "list=($(ls -v --quoting-style=shell-always))"
do-something-with "${files[@]}"
2
28.01.2020, 02:14

Теги

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