Хотя я могу найти все .tgz-файлы в папке, а затем извлечь из него только файлы PDF, EPUB и MOBI, если они есть в архиве.Как использовать оператор OR с подстановочными знаками при извлечении файлов с помощью tar
find '/home/pi/Downloads/complete/' -type f -name "*.tgz"| while read i ; do tar -xvzf "$i" -C /home/pi/Downloads/complete/ebook/ --strip=1 --wildcards --no-anchored '*.pdf' '*.mobi' '*.epub'; done
Эта строка кода отлично работает, если в архиве присутствует любой из pdf, mobi или epub. Однако с этим кодом, когда в данном архиве нет файла pdf/epub/mobi, он возвращает ошибку, как показано ниже.
tar: *.pdf: Not found in archive
tar: *.mobi: Not found in archive
tar: Exiting with failure status due to previous errors
Как предотвратить эту ошибку. Я считаю, что должен быть способ обеспечить множественные подстановочные знаки оператором OR, доступным на других языках сценариев.
Это, вероятно, больше на тему в http://unix.stackexchange.com или http://superuser.com, но я бы предположил, что подстановочные будет работать как шаблон Glob, и могут быть объединены в '--no-anchored \ *. {pdf, mobi, epub}' (но если он отсутствует, он все равно может сообщить об ошибке) –