首页 > 解决方案 > 目录的 cp 命令出现问题

问题描述

我正在尝试使用 cp 函数来复制目录:

src/1/b
src/2/d
src/3/c
src/4/a
src/5/e
那么复制应该导致

tgt/a/4
tgt/b/1
tgt/c/3
tgt/d/2
tgt/e/5
我尝试使用“basename”函数以及“cp dir1/*dir2”。使用基本名称,我是循环查找每个目录还是有递归内置?还尝试了“cp-r”递归复制功能。但到目前为止没有任何效果。

标签: shell

解决方案


我使用tmp了包含文件源列表的文件夹,你可以重新调整:

cat tmp

result:
src/1/b
src/2/d
src/3/c
src/4/a
src/5/e

从这里,我回显命令,但是echo如果此输出看起来正确,您可以删除它并执行它:

#!/bin/bash
cat tmp |while read z
do
  echo cp "$z" "tgt/$(echo "$z"|cut -d/ -f 3)/$(echo "$z"|cut -d/ -f 2)"
done

result:
cp src/1/b tgt/b/1
cp src/2/d tgt/d/2
cp src/3/c tgt/c/3
cp src/4/a tgt/a/4
cp src/5/e tgt/e/5

您还可以根据需要添加参数cp。但首先用echo命令测试,然后执行:)


推荐阅读