Я должен скопировать файлы в папку с именем с их типом, используя команду «найти». Есть много файлов с большим количеством папок. Я попробовал команду:

find ./find -type f -exec bash -c ' file -b "$1"|cut -d " " -f 1 ' none {} \;

Но я не знаю, как я могу использовать mkdir для создания папок, когда я использую «|».

Я думаю о двух командах. Сначала сделайте папки из типа файлов. Вторая копия файлов в эту папку.

Но как я могу сделать эту папку.

1 ответ1

0

Используя выражение вырезанного файла, чтобы определить имя каталога:

find . -type f -exec bash -c 'd="../$(file -b "$1"|cut -d " " -f 1)"; mkdir -p "$d"; cp "$1" "$d" ' none {} \;

Как это устроено

  • d=../$(file -b "$1"|cut -d " " -f 1)

    Это находит имя каталога, соответствующего типу файла. Я добавил ../ так, чтобы поместить их в родительский каталог. Вы можете поместить их в другое место.

  • mkdir -p "$d"

    Это создает каталог, если он еще не существует.

  • cp "$1" "$d"

    Это копирует файл в каталог.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .