如何移动使用模式找到的文件并移至UNIX中的另一个子目录



我有这个:

.
├── dirA
│   └── ProdA
│       ├── Brief
│       │   └── Form.xlsx
│       ├── Results
│       └── Studies
└── dirB
    └── BrandB
        └── ProdB
            ├── Brief
            │   └── Form.xlsx
            └── Results

我想要这个:

.
├── dirA
│   └── ProdA
│       ├── Brief
│       ├── Results
│       └── Studies
│           └── Form.xlsx
└── dirB
    └── BrandB
        └── ProdB
            ├── Brief
            └── Results
            └── Studies  
                └── Form.xslx         

因此,基本上我必须找到文件form.xlsx,然后将其从子目录摘要转移到子目录研究(如果不存在,则创建它(。

当我这样做时:

find . -name '*.xlsx' -exec mv '{}' ../Studies ';'

我得到了:

.
├── dirA
│   └── ProdA
│       ├── Brief
│       ├── Results
│       └── Studies
└── dirB
    └── BrandB
        └── ProdB
            ├── Brief
            └── Results

您不应该使用 ..获取匹配的文件的父目录,而是使用 dirname

find . -name "*.xlsx" -exec sh -c 'mv {} "$(dirname $(dirname {}))/Studies/"' ;

尝试一下!:(

最新更新