Как получить n-й результат от find?

Libre Office может сделать это, «распечатав» текст непосредственно в формате JPG или PDF.

Например, если вы экспортируете архив в PDF с разрешением 300 DPI, вы сможете преобразовать его в JPG с максимальным разрешением 300 DPI без искажений. Если вы поставите 400 DPI из PDF-файла с разрешением 300 DPI, вы как будто «растянете» архив.

Но когда вы делаете это непосредственно из de Libre Office, вы определяете разрешение изображения без промежуточных преобразований. Итак, если вы установите для изображения 900 DPI, вы сможете преобразовать его в другой архив с максимальным разрешением 900 DPI. Но то же самое применимо и здесь, если вы хотите получить архив с разрешением 1000 точек на дюйм из изображения только с разрешением 900 точек на дюйм, в конечном результате будут некоторые искажения.

По сути, вы можете выполнить преобразование непосредственно из Libre Office с большим разрешением в JPG, поскольку в Libre Office есть «исходный файл», а не «промежуточный файл», такой как PDF.

Извините, но я не знаю, как это сделать вне Libre Office, но должно существовать множество программ, которые это делают.

1
23.07.2020, 05:25
2 ответа

Вы можете использовать $SLURM_JOB_NODELIST?

В этом случае GNU Parallel кажется очевидным решением:

find -maxdepth 1 -name '2019 - *' |
  parallel --slf $SLURM_JOB_NODELIST --wd../a.out {}
0
18.03.2021, 23:18

Вероятно, использование findявляется ошибкой, особенно если вас интересуют только файлы в текущем каталоге. Вы можете просто использовать шаблон оболочки оболочки.

#/bin/sh

for f in '2019 - '*
do
    [ -f "$f" ] &&./a.out "$f" &
done

Проверка на переносимость файла. Если вы используете bash, вы можете использовать shopt -s nullglob, чтобы заставить не соответствующий -шаблон расширяться в ничто, а не в себя, и, таким образом, заставить цикл выполняться ноль раз, а не один раз, если нет соответствующих файлов. Однако переносимость хороша и обрабатывает такие случаи, как имена каталогов, которые соответствуют шаблону.

По-видимому, требуется "шаблон скрипта", но я плохо понимаю, что это значит.

Возможно

#!/bin/bash
# magic string for slurm to run on 10 hosts
#SBATCH --array=1-10

filename_array=( '2019 - '* )
filename=${filename_array[$SLURM_ARRAY_TASK_ID-1]}
./a.out "$filename"

это то, что нужно?

Изменить :Еще одно изменение требования. Поддержка регулярных выражений для шаблонов.

#!/bin/bash
# magic string for slurm to run on 10 hosts
#SBATCH --array=1-10

readarray -d '' filename_array < <( find. -maxdepth 1 -regex '.*2019 -.*' -print0 | sort -z )
filename=${filename_array[$SLURM_ARRAY_TASK_ID-1]}
./a.out "$filename"
1
18.03.2021, 23:18

Теги

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