在bash中自动复制文件

在bash中自动复制文件,bash,terminal,copy,Bash,Terminal,Copy,我有一个文件和目录列表(在一个文本文件中),我需要将它们复制到一个稍微不同的路径。我如何使用bash来实现这一点?示例文件列表如下所示 html/app/design-old/[path-to-file-or-directory] 我想把它们都复制到 html/app/design/[same-path-to-file-or-directory] 谢谢html是在根目录中还是在当前目录中?假设它在根目录中,并且您只想从“默认”目录复制一个文件 mkdir /html/app/design m

我有一个文件和目录列表(在一个文本文件中),我需要将它们复制到一个稍微不同的路径。我如何使用bash来实现这一点?示例文件列表如下所示

html/app/design-old/[path-to-file-or-directory]
我想把它们都复制到

html/app/design/[same-path-to-file-or-directory]

谢谢

html是在根目录中还是在当前目录中?假设它在根目录中,并且您只想从“默认”目录复制一个文件

mkdir /html/app/design
mkdir /html/app/design/frontend
mkdir /html/app/design/frontend/base
mkdir /html/app/design/frontend/base/default
cd /html/app/design-old/frontend/base/default
cp filename ../../../../design/frontend/base/default
如果要复制目录,请将最后一行更改为

cp directoryname ../../../../design/frontend/base/default -r

请注意-r表示dir copy。

假设在名为
list.txt的文件中有路径列表,
每行一个文件名,
这应该起作用:

source_dir=html/app/design-old
target_dir=html/app/design

while read path; do
    newpath=${path/$source_dir/$target_dir}
    target_basedir=$(dirname "$newpath")
    mkdir -p "$target_basedir"
    cp -r "$path" "$target_basedir/"
done < list.txt
source\u dir=html/app/design old
target_dir=html/app/design
同时读取路径;做
newpath=${path/$source\u dir/$target\u dir}
target_basedir=$(dirname“$newpath”)
mkdir-p“$target\u basedir”
cp-r“$path”“$target\u basedir/”
完成
读取文件名时;做
cp-r“$source\u dir/$filename”“$target\u dir/${filename%/*}”;完成
你试过什么吗?没有,有人能解释为什么这个问题被搁置并被否决吗?我建议在阅读文件名时使用
mkdir
的选项
-p
;执行cp-r“$source\u dir/$filename”“$target\u dir/${filename%/*}”;完成
while read filename; do  
   cp -r "$source_dir/$filename" "$target_dir/${filename%/*}"; done < nothelp2.txt