自动复制 bash 中的文件

Automating copying files in bash

我有一个文件和目录列表(在一个文本文件中),我需要将其复制到稍微不同的路径,我如何使用 bash 执行此操作?例如文件列表都是这样的

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

我希望将它们全部复制到

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

谢谢

html是在根目录还是当前目录?假设它在根目录中,而您只想从 "default" 目录复制一个文件...

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。

假设名为 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
while read filename; do  
   cp -r "$source_dir/$filename" "$target_dir/${filename%/*}"; done < nothelp2.txt