gpt4 book ai didi

linux - 如何在使用 tar 提取文件时使用带通配符的 OR 运算符

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:34:34 25 4
gpt4 key购买 nike

虽然我可以找到一个文件夹中的所有 .tgz 文件,然后仅从中提取 PDF、EPUB 和 MOBI 文件(如果它存在于存档中)。

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

如何防止这个错误。我相信应该有一种方法可以为多个通配符提供一个“或”运算符,就像在其他脚本语言中一样。

最佳答案

tar 不是脚本语言。

要隐藏错误消息,只需将 tar 的 stderr 重定向到一个位桶:

tar ... 2> /dev/null

请注意,您可能会错过其他错误。

安全的方法是先列出文件,选择要提取的文件,只有在有文件时才这样做。

tar --list -f ...tgz | grep '\.\(pdf\|mobi\|epub\)$'

关于linux - 如何在使用 tar 提取文件时使用带通配符的 OR 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39316778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com