我有这个:
.
├── 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并将其从子目录Brief移到子目录Studies(如果不存在则创建文件),两者都处于同一级别。
当我这样做:
find . -name '*.xlsx' -exec mv '{}' ../Studies ';'
我知道了
.
├── dirA
│ └── ProdA
│ ├── Brief
│ ├── Results
│ └── Studies
└── dirB
└── BrandB
└── ProdB
├── Brief
└── Results
答案 0 :(得分:1)
您不应使用..
来获取匹配文件的父目录,而应使用dirname
。
find . -name "*.xlsx" -exec sh -c 'mv {} "$(dirname $(dirname {}))/Studies/"' \;
尝试一下! :)