【问题标题】:Updating a library file to multiple locations in Linux将库文件更新到 Linux 中的多个位置
【发布时间】:2017-05-12 17:10:52
【问题描述】:

我有一个库文件,我经常像您一样从库中访问它。例如/library/component.js 但有时需要将其作为项目文件夹中的副本进行访问。例如。 .../someProject/library/component.js

我的问题是,如果我更新 component.js 的主版本,我还希望更新许多项目版本。我不知道所有项目副本在哪里,除了它们确实有一个根目录,在本次讨论中我们称之为/projects

算法是:

(1) 在/projects的所有子目录中搜索component.js

(2) 如果更新,则使用主文件更新

(FTP 等其他构建和更新功能不在此范围内,但最好有日志。)

Q1:是否有一个 Linux 实用程序可以立即生效?

Q2:谁能推荐一个shell脚本?

(我可以编写巧妙的 MS-DOS 批处理脚本,但在 Linux 命令行方面我是新手。)

【问题讨论】:

  • 我认为这种问题在 SuperUser (superuser.com) 上可能比 Stack Overflow 更好地回答

标签: linux file versions


【解决方案1】:

如果你要更新的文件不是经常创建和删除的,你可以使用locate命令。

(1) 在 /projects 的所有子目录中搜索 component.js。 (使用找到component.js

然后你可以利用 rsync 来一一更新这些文件。也许通过遍历定位命令的输出。

附言

如果找不到文件,只需运行一次“updatedb”命令即可。

【讨论】:

    【解决方案2】:

    (1) 在/projects的所有子目录中搜索component.js

    (2) 如果更新,则使用主文件更新

    (其他构建和更新功能,如 FTP 不在范围内, 但是日志会很好。)

    Q1:是否有 Linux 实用程序可以立即生效?

    是的,它叫find

    find /projects -name component.js ! -newer /library/component.js -exec cp /library/component.js {} \;
    

    对于日志,我们可以在cp 之后添加选项-v 并重定向输出。

    【讨论】:

    • 这正是我想要的。谢谢。
    猜你喜欢
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 2022-07-01
    • 1970-01-01
    相关资源
    最近更新 更多