Непосредственно переместить вывод файла программы командной строки в папку - PullRequest
0 голосов
/ 29 января 2020

Я запускаю программу командной строки (macOS), которая выводит сообщение об успехе в командную строку, а также создает некоторые файлы, которые имеют результаты программы.

Поскольку я запускаю эту программу много раз с разными параметрами, я бы хотел сгруппировать результаты в папках по параметрам. В идеале, если я запускаю PROGRAM [param_1 = 1] [param_2 = 2], а затем PROGRAM [param_1 = 1] [param_2 = 3], я получу:

param_1_1
    param_2_2
        OUTPUT_FILES
    param_2_3
        OUTPUT_FILES

Я попытался:

Сначала создайте папку output, используя mkdir -p, затем выполните PROGRAM [param_1 = 1] [param_2 = 2] > output, но это поместит сообщение об успехе в текстовый файл с именем output и никуда не переместит выходные файлы.

Я также думал о том, чтобы запустить мою программу и затем использовать сценарий bash, включающий mv, чтобы переместить файлы в папки путем классификации по имени файла, но имена файлов довольно разнообразны и, хотя, вероятно, возможны Я хотел бы пропустить этот шаг, если смогу.

1 Ответ

1 голос
/ 29 января 2020

Это происходит потому, что > отправляет только стандартный вывод с именем файла справа.

Вы можете изменить саму программу (например, способ, которым она открывает файловые указатели), но если это невозможно:

  • Если все файлы созданы по любому пути относительно туда, где запускается программа, затем cd в другой каталог перед запуском, так что шаг mv более простой
  • Если они выводят по пути, где нет других файлов, вы можете сделать это путь к символьной c ссылке с использованием ln, где реальный путь - это выходной каталог

В противном случае может потребоваться выполнить то, что вы предложили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...