如何根据特定文件名仅对目录中的文件进行 tar 操作?

如何根据特定文件名仅对目录中的文件进行 tar 操作?

我想创建一个 tar 包,并仅包含目录中以特定文件名开头的文件。例如,我有 apples-xxx 和 oranges-xxx,我只想将以“apple”开头的文件打包成 tar 文件。我该怎么做?

谢谢!

答案1

嗯,我可能忽略了一些东西,但是

tar cf /path/tarfile appl*

除非您有也被称为 的目录./appl*,在这种情况下,它们及其内容将被拖曳,否则应该可以做到这一点。如果属于后者,您可以使用 来停止这种情况--no-recursion

答案2

也许是这样的:

find / -type f -name "apple*" -exec tar -rf archive.tar '{}' \;

tar cf /path/tarfile appl*这比因为没有使用 apple* 模式存档目录要好

答案3

关于什么

find / -type f -name "apple*" -exec tar -cf archive.tar '{}' \+

? 这样,它会一次性将所有文件名传递给 tar(参见-exec 命令 {} +在查找手册页上)。

答案4

对于具有不同模式的多个文件,可以使用

find ./ -type f \( -name "apple*" -o -name "orange*" -o -name "berries*" -o -name "lemons*" \) -exec tar -cf archive.tar '{}' \+

这是基于 B14D3 和 al0 的答案,以及此处的链接:https://www.tecmint.com/linux-find-command-to-search-multiple-filenames-extensions/

相关内容