递归复制子文件夹的内容

Raj*_*sad 0 command-line bash cp

我想将src文件夹的内容复制到具有原始src目录父目录名称的不同位置的新目录。

这是我试图实现的目标的说明。

输入

source/folder1/src
source/folder2/src
source/folder3/src
Run Code Online (Sandbox Code Playgroud)

输出(所有文件夹都应该包含文件夹的内容src

dest/folder1
dest/folder2
dest/folder3
Run Code Online (Sandbox Code Playgroud)

Zan*_*nna 5

您可以使用 for

for d in /path/to/source/*; do echo mkdir /path/to/dest/"$(basename $d)" && echo cp -rvb -- /path/to/source/"$d"/src/* /path/to/dest/"$(basename $d)"; done
Run Code Online (Sandbox Code Playgroud)

如果您是从sourceand的父目录执行此操作,则dest可以使用相对路径:

for d in source/*; do echo mkdir dest/"$(basename $d)" && echo cp -rvb -- "$d"/src/* dest/"$(basename $d)"; done
Run Code Online (Sandbox Code Playgroud)

测试后,删除echo以实际复制文件

for d in source/*; do mkdir dest/"$(basename $d)" && cp -rvb -- "$d"/src/* dest/"$(basename $d)"; done
Run Code Online (Sandbox Code Playgroud)

更具可读性...

for d in /path/to/source/*; do 
  echo mkdir /path/to/dest/"$(basename $d)" && 
  echo cp -rvb -- /path/to/source/"$d"/src/* /path/to/dest/"$(basename $d)"
done
Run Code Online (Sandbox Code Playgroud)