将一个文件夹的内容安装到另一个文件夹中

将一个文件夹的内容安装到另一个文件夹中

我正在尝试编写一个 Makefile 将文件夹的内容安装到系统上的另一个文件夹中。

我想保持相同的目录结构,就像这样。

localfolder
├── a
└── b
    ├── c
        └── d
            ├── e
                └── f

我尝试了不同的选项,但没有任何作用

$ install -d localfolder /opt/folder
(does nothing)
$ install -t localfolder /opt/folder
install: omitting directory '/opt/folder'
$ install -D localfolder /opt/folder
install: omitting directory 'localfolder'

有人能指出我正确的方向吗?谷歌搜索“linux install command”没有带来任何相关信息。

谢谢!

答案1

对于那些想要解决方案的人,这里是:安装命令不能递归运行。所以我写了一个 shell 脚本来实现这个目的。

第一个参数是要复制的文件夹,第二个参数是目标目录

#!/bin/sh

# Program to use the command install recursivly in a folder

magic_func() {
    echo "entering ${1}"
    echo "target $2"

    for file in $1; do
        if [ -f "$file" ]; then
            echo "file : $file"
            echo "installing into $2/$file"
            install -D $file $2/$file

        elif [ -d "$file" ]; then
            echo "directory : $file"
            magic_func "$file/*" "$2"

        else
            echo "not recognized : $file"

        fi
        done
}

magic_func "$1" "$2"

它也可以作为要点这里

答案2

来源文件列表的一侧install(根据info)。所以,使用

install source/* /destination

-d-D选项在目标中创建丢失的目录(有差异), -t选项意味着目的地是目录。

使用目录选项,它会复制每个源文件进入目标文件夹带有源文件名

相关内容