скопировать файлы в другую папку - найти

768
diego9403

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

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

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

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

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

0
В чем преимущество использования `find` здесь? Почему бы не использовать [`rsync`] (http://linux.die.net/man/1/rsync) вместо того, чтобы синхронизировать контент из одной папки в другую? JakeGould 8 лет назад 0
Это задание из исследований, и мы не использовали rsync. diego9403 8 лет назад 0
Я нашел решение: 'find ./find -type f -exec bash -c' file -b "$ 1" | cut -d "" -f 1 | awk -f aw 'none {} \; | xargs mkdir', но я не могу скопировать этот файл. Моя команда: 'find ./find -type f -exec bash -c' file -b "$ 1" | cut -d "" -f 1 | awk -f aw | cp "$ 1" 'none {} \; 'И ошибка: cp: пропустить каталог `find / PNG /' diego9403 8 лет назад 0
Я пытаюсь скопировать файлы в другую папку, но не могу. Команда: find ./find -type f -exec bash -c 'file -b "$ 1" | cut -d "" -f 1 | awk -f wa | xargs cp "$ 1"' none {} \; Но я вижу только ошибку: cp: `./find/PDF/20163.32630.27874 'и` find / PDF 20163.32630.27874' - это один и тот же файл diego9403 8 лет назад 0

1 ответ на вопрос

0
John1024

Using your file-cut expression to determine the directory name:

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

How it works

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

    This finds the name of the directory corresponding to the file's type. I added ../ so to put these under the parent directory. You may want to put them somewhere else.

  • mkdir -p "$d"

    This creates the directory if it doesn't already exist.

  • cp "$1" "$d"

    This copies the file to the directory.