Как переместить файлы, найденные с шаблоном, и перейти в другой подкаталог в unix - PullRequest
0 голосов
/ 01 июля 2019

У меня есть это:

.
├── 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 в подкаталог Исследования (создайте его, если он не существует), оба на одном уровне.

когда я сделаю:

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

Я получил:

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

1 Ответ

1 голос
/ 05 июля 2019

Вы не должны использовать .., чтобы получить родительский каталог соответствующего файла, вместо этого используйте dirname.

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

Попробуйте! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...