我有以下 struct :

.
├── 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作业(job)的新文件夹,我的预期输出文件夹是:

.
├── 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/

尽管我的脚本没有写入文件,也没有返回任何错误.我怎么才能解决这个问题?

推荐答案

使用此,install命令获取输入文件并将其复制到另一个目录 struct ,如有必要,透明地创建整个目录树mkdir -p:

(您需要在-wholename中添加通配符*才能有效查找文件)

find . -type f -wholename "*/sparkjob/current/*" -exec bash -c '
    dir=${1#./} dir=${dir%%/*} file=${1##*/}
    install -D "$1" "./$dir/$file"
' bash {} \;

Exemple of what is done:

install -D ./dag_2/sparkjob/current/spark_3.py ./dag_2/spark_3.py
install -D ./dag_1/sparkjob/current/spark_3.py ./dag_1/spark_3.py

源路径就是一个例子,如果再长一些,就没有问题了.

Linux相关问答推荐

Windows WSL 以上 Linux 中的 AF_UNIX 套接字无法绑定到 /mnt 文件:错误 95,不支持操作

提交SLURM作业(job)时出现nohup问题

在 Ansible 中使用 JSON 查询过滤数据以从 ansible_fact 中提取数据

我有 ext2 格式的文件系统图像.我喜欢在终端中读取 Linux 特别是 Ubuntu 中的所有文件系统 struct 数据.有没有工具>

如何使用换行符或制表符或空格 grep 多行字符串

使用 awk 将 csv 拆分为带有标题的多个文件

在 Linux 中 Select 多个同名的可执行文件

如何在 Linux 中获取 C/C++ 中的用户名?

MessageBox 的 GTK 实现

Linux/Unix 手册页语法约定

哪个程序在给定任何文件的情况下创建一个 C 数组?

如何通过 ssh 判断 ubuntu 服务器上是否存在 php 和 apache

发出信号并中断比较

如何在没有空格的情况下打印 awk?

Colored shell 脚本输出库

什么是适用于 Linux 的好的 Prolog IDE?

Linux下的签名可执行文件

当父进程被杀死时,使用 fork() 创建的子进程是否会自动被杀死?

基于shell中正则表达式的 colored颜色 突出显示输出

带有日期和时间的 Linux 命令历史记录