匹配相同目录名称的内容并将其复制到具有相同名称的新目录中?

时间:2018-11-15 17:56:05

标签: bash

我的脚本应检查一个名为/ etc / scriptbuilder / default / contents的目录,该目录将包含一些目录,如果内容目录中的目录与项目目录中的目录匹配,则目录目录中的文件应复制到项目目录中(因此,如果/ etc / scriptbuilder / default / contents / docs和/ project / docs都存在,则应复制/ etc / scriptbuilder / default / contents / docs的内容。)

我在进行这项工作时遇到了麻烦。它必须找到相同目录名称的匹配项,如果目录名称相同,则将内容从目录复制到项目目录。这是我到目前为止的内容:

 #! /bin/bash


  if [ -d "$/etc/scriptbuilder/default/contents ]; then

 if [[ "/etc/scriptbuilder/default/contents" =~ name ]]; then

 cp -a #I'm not sure how to copy and check for the name on the project 
       directory

 fi
 fi

2 个答案:

答案 0 :(得分:0)

类似的东西会找到您要查找的目录并打印出来。

source="/etc/scriptbuilder/default/contents"
destination="/home/something/project"

# loop the directories of the source folder
cd "$source"
for name in */ ; do

    # create the source and the possible destination directory paths
    s="$source/$name"
    d="$destination/$name"

    # check if the directory exists in the project
    if [ -d "$d" ]; then

        echo "TODO: Perfrom copy of from $s to $d"
    fi
done

如果您需要复制命令方面的帮助,请同时发表评论。

答案 1 :(得分:0)

使用循环可能是这样的:

Dir1=path_to_contents/contents
Dir2=path_to_project/project

for i in $(find "$Dir1/" "$Dir2/" -printf '%P\n' | sort | uniq -d)
do
  cp -r $Dir1/$i $Dir2
done