shell - 目录的 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”递归复制功能。但到目前为止没有任何效果。
解决方案
我使用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
命令测试,然后执行:)
推荐阅读
- python - 如何处理 value == None 正常并且应该通过的异常?
- json - Jolt - 合并两个数组并重命名字段
- android - 当 RecyclerView 连续获得 2 个相同的对象时,它将“相机”移动到第二个,将前一个留在视图之外,“上方”
- flutter - 不良状态:无元素
- c - 为什么这不是在 C 中创建默认结构实例的有效方法?
- virtualenv - 使用诗歌外壳时如何动态设置环境变量?
- flutter - 局部变量'basename'在声明之前不能被引用/Flutter
- javascript - 如何将 MySQL 服务器与 windows 的电子应用程序包集成?
- mysql - 在案例表达式 Redshift 中摆脱 group by 变量
- path - ENOENT:没有这样的文件或目录 readFileSync