Автоматически сканировать первую страницу с изображением в пакетном режиме

При наличии нескольких расширений для пункта назначения вы можете добавить больше логики в директивы find:

find ~/Downloads -maxdepth 1 \( -name "*.tar.gz" -o -name "*.zip" \) -print0 | xargs -0 -I % mv % ~/Downloads/archives/

И вам не нужно подключаться к xargs:

find ~/Downloads -maxdepth 1 \( -name "*.tar.gz" -o -name "*.zip" \) -exec mv -t ~/Downloads/archives/ {} +

Поскольку у вас есть -maxdepth 1, вам действительно нужно find?

shopt -s nullglob
cd ~/Downloads
mv -t archives/ *.tar.gz *.zip
mv -t Pictures/ *.jpg *.png *.tiff
# etc

Этот подход будет выдавать некоторые ошибки, если нет файлов для перемещения. Вы можете обойти это с помощью чего-то вроде:

shopt -s nullglob
movefiles() {
    local dest=$1
    shift
    if (( $# > 0 )); then
        mkdir -p "$dest"
        mv -t "$dest" "$@"
    fi
}
cd ~/Downloads
movefiles PDF/      *.pdf
movefiles OPM/      *.opm
movefiles YML/      *.yml
movefiles CSS/      *.css
movefiles archives/ *.zip *.tar.gz
movefiles Pictures/ *.jpg *.png *.tiff
movefiles Perl/     *.pm
movefiles Excel/    *.xls*
movefiles Word/     *.doc*

Примечания:

  • без nullglob, если ни один файл не соответствует шаблону, функция получит шаблон в виде строки.
    • например, если файлов pdf нет, оболочка выполнитmovefiles PDF/ "*.pdf"
  • с nullglob, если совпадений нет, то оболочка удаляет шаблон из команды:movefiles PDF/
  • вот почему я проверяю количество аргументов :если ни один файл не совпадает, то после сдвига $#равен нулю и, следовательно, перемещать нечего.
0
20.10.2020, 14:17
1 ответ

Scanimageтакой возможности нет.

С помощью простой функции bashвы можете передать первому enterсообщение echoи дождаться ввода другого с помощью cat. Вот что

echo;cat

да. Вы можете проверить это с помощью:

(echo;cat)|sed 's/^/START/;s/$/END/'

Таким образом, это подается в STDINиз scanimage.

1
18.03.2021, 22:56

Теги

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