将多个文件从多个目录移动到源相对目标

将多个文件从多个目录移动到源相对目标

具有以下文件层次结构:

dir
├── dirA
│   └── snapshot
│       └── subdir1
│           └── file1
└── dirB
    └── snapshot
        └── subdir2
            └── file2

我想在单个命令中从每个快照/子目录目录移动文件到快照的父目录。那将是:

dir
├── dirA
│   └── file1
│   └── snapshot
│       └── subdir1
└── dirB
    └── file2
    └── snapshot
        └── subdir2

我已经尝试过mv dir/*/snapshot/*/* ../../,但由于目标部分../../是相对于工作目录的,所以它显然不起作用。

是否可以使用 bash 命令(因为我从未编写过一行 bash 脚本)?

答案1

基于@Don_Christ的敏锐观察,这个答案被编辑,从而保存了一个子shell:

for i in dir/*/snapshot; do
     mv "$i"/*/* "$i"/..
done

相关内容