Мне нужно переместите каждый file.tif
в каталог TIFF
внутри его родительского каталога.
├── 1
│ ├── 240_01.tif
│ ├── 240_02.TIF
│ └── TEST
│ └── syg_240_test_1.tif
├── 2-3
│ ├── 2
│ │ ├── 240_01.tif
│ │ ├── 240_02.TIF
│ │ └── TEST
│ │ └── syg_240_test_1.tif
│ └── 3
│ ├── 240_01.tif
│ ├── 240_02.TIF
│ └── TEST
│ └── syg_240_test_1.tif
└── 4
├── 240_01.tif
├── 240_02.TIF
└── TEST
└── syg_240_test_1.tif
Например, это должно выглядеть так:
├── 1
│ ├── TEST
│ │ └── syg_240_test_1.tif
│ └── TIFF
│ ├── 240_01.tif
│ └── 240_02.TIF
├── 2-3
│ ├── TEST
│ │ └── syg_240_test_1.tif
│ └── TIFF
│ ├── 2
│ │ ├── 240_01.tif
│ │ └── 240_02.TIF
│ └── 3
│ ├── 240_01.tif
│ └── 240_02.TIF
└── 4
├── TEST
│ └── syg_240_test_1.tif
└── TIFF
├── 240_01.tif
└── 240_02.TIF
Я пытаюсь использовать mv /path/*/*.tif/ /path/*/TIFF/*.tif
, но это не так. работай.
И снова на помощь может прийти find
. Вы можете выборочно найти tiff
файлы во вложенных папках первого уровня, затем использовать команду -execdir
, которая перемещает найденный файл в папку TIFF в текущем каталоге.
Можно вызвать небольшой сценарий, который проверяет существование папки TIFF или создает ее перед перемещением всех файлов tiff, но для данного случая, вероятно, проще работать в два этапа: 1) создать папку TIFF в любой из нужных вам папок и 2) переместить туда файлы TIFF
find . -maxdepth 1 -type d -path '*/*' -exec mkdir {}/TIFF \;
найдет папки "1", "2" и т.д. при условии, что ваша текущая директория содержит эти папки, и создаст каталог TIFF в каждой из них. Если папка TIFF уже существует, будет выдано сообщение об ошибке.
Вторая команда может затем переместить все tiff
файлы во вновь созданные папки:
find . -type f -ipath '*/*/*.tif' -execdir mv {} TIFF \;
Здесь мы ищем файлы только (-type f
) в папках "1", "2" и т.д., но не ниже, из-за шаблона файлов (-ipath
). -ipath
в отличие от -path
указывает на то, что совпадение не чувствительно к регистру. Действие -execdir
выполняет следующую команду, однако в качестве текущей папки используется папка найденного файла. {}
обозначает найденный файл. Из-за действия -execdir
это только основное имя файла. Файл будет перемещен в папку TIFF в текущей папке.
Пробелы в имени файла будут правильно обработаны маркером {}
. Нет необходимости вставлять кавычки, хотя вы могли бы.