linux - Bash - 如何归档和压缩子目录中的文件,但只能使用特定的文件名

标签 linux bash gzip tar

我的目录结构如下:

main_directory/
    directory1:
        sub_directory1:
            files:
                myfile.txt
                otherfile.txt
        sub_directory2:
            files:
                myfile.txt
                otherfile.txt
        sub_directory3:
            files:
                myfile.txt
                otherfile.txt
        sub_directory4:
            files:
                myfile.txt
                otherfile.txt
    directory2:
        sub_directory1:
            files:
                myfile.txt
                otherfile.txt
        sub_directory2:
            files:
                myfile.txt
                otherfile.txt
        sub_directory3:
            files:
                myfile.txt
                otherfile.txt
        sub_directory4:
            files:
                myfile.txt
                otherfile.txt

我试图弄清楚(通过反复试验,因为我不是 Linux 专家)如何只对所有目录中的 myfile.txt 文件进行 gzip 压缩。由于它们在不同路径中都具有相同的文件名(没有办法解决这个问题),因此我也需要能够将文件路径保留在存档中。所以我要创建的最终 gzipped tar 文件将包含以下内容:

mytar.tar.gz
    main_directory/directory1/sub_directory1/files/myfile.txt
    main_directory/directory1/sub_directory2/files/myfile.txt
    main_directory/directory1/sub_directory3/files/myfile.txt
    main_directory/directory1/sub_directory4/files/myfile.txt
    main_directory/directory2/sub_directory1/files/myfile.txt
    main_directory/directory3/sub_directory2/files/myfile.txt
    main_directory/directory4/sub_directory3/files/myfile.txt
    main_directory/directory5/sub_directory4/files/myfile.txt

是否有一种简单的 bash 方法可以做到这一点?我想我可以编写一个 python 脚本来完成它,但这似乎有点过分了。

有人有什么建议吗?

最佳答案

这解决了另一个答案中描述的这个问题。

find main_directory/ -name "myfile.txt" | tar -czvf mytar.tar.gz -T -

关于linux - Bash - 如何归档和压缩子目录中的文件,但只能使用特定的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25468279/

相关文章:

删除文本文件中空行的linux脚本

linux - 如何在一个管道中对一个文件进行两次cat

bash - 在多个文件上运行脚本

html - 仅将 bundle.js 保存并提供为 gzip 版本

java - 带有 Java : Is there a limit? 的 Zip 文件

PHP访问Linux服务器上的邮件队列

linux - 将数千个文件从一个目录复制到另一个目录时出现 "Argument too long"错误

email - Bash 脚本 Ubuntu mailx

java - 从 Java 调用带有重定向的 bash 脚本

.net - 如何动态压缩 http 请求而不在内存中加载压缩缓冲区