我有以下结构:
.
├── dag_1
│ ├── dag
│ │ ├── current
│ │ └── deprecated
│ └── sparkjobs
│ ├── current
│ | └── spark_3.py
│ └── deprecated
│ └── spark_1.py
│ └── spark_2.py
├── dag_2
│ ├── dag
│ │ ├── current
│ │ └── deprecated
│ └── sparkjobs
│ ├── current
│ | └── spark_3.py
│ └── deprecated
│ └── spark_1.py
│ └── spark_2.py
我想创建一个新文件夹,只获取当前的spark作业,我期望的输出文件夹是:
.
├── dag_1
| └── spark_3.py
├── dag_2
└── spark_3.py
我试着用
find /mnt/c/Users/User/Test/ -type f -wholename "sparkjob/current" | xargs -i cp {} /mnt/c/Users/User/Test/output/
虽然我的脚本没有写文件,也没有返回错误。我该如何解决这个问题?
5条答案
按热度按时间67up9zun1#
我觉得你在找这样的东西:
如果输出看起来不错,则删除
echo
。0ve6wy6x2#
使用
install
命令获取输入文件并将其复制到另一个目录结构中,如有必要,透明地创建整个目录树mkdir -p
:(you需要在
-wholename
中添加通配符*
才能有效地查找文件)所做工作的示例:
源路径是一个示例,如果更长,没有问题。
bxjv4tth3#
您将需要执行以下操作:
2exbekwf4#
首先,你应该检查
find
返回什么,删除|
之后的所有内容。你会发现find
没有找到任何文件。-wholename
与整个名称匹配,因此您需要*/sparkjob/current/*
tree
输出,文件夹的名称不是sparkjob
,而是sparkjobs
。我会这样开始:
我添加了一个
echo
,以便您可以检查所有路径和命令是否正确。您可能希望以简单性换取性能。如果性能很重要(许多文件或频繁运行),请参见https://mywiki.wooledge.org/BashFAQ/001。
vs91vp4v5#
这看起来很简单。