Скопировать файлы в другую папку - найти
Я должен скопировать файлы в папку с именем с их типом, используя команду "найти". Есть много файлов с большим количеством папок. Я попробовал команду:
find ./find -type f -exec bash -c ' file -b "$1"|cut -d " " -f 1 ' none {} \;
Но я не знаю, как я могу использовать mkdir для создания папок, когда я использую "|".
Я думаю о двух командах. Сначала сделайте папки из типа файлов. Вторая копия файлов в эту папку.
Но как я могу сделать эту папку.
1 ответ
Решение
Используя выражение для вырезания файла, определите имя каталога:
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"
Это копирует файл в каталог.