Вы можете использовать параметр -exec
команды find
:
cd Father
find Child1 Child2 ... -name '*.avi' -exec mv -n {} . +
Команда разбивается на следующие части:
find Child1 Child2 ...
найдет все файлы и каталоги в Child1, Child2 и т. Д. Действие по умолчанию - напечатать их имена -name '* .avi'
ограничит результат в файлы (или каталоги), соответствующие шаблону имени "* .avi" -exec mv {}. +
означает, что find
выполнит команду вместо печати результатов сопоставления; {}
указывает, где в команде find
следует указать имена файлов, которые он нашел, а +
указывает конец команды для выполнения, а также сигнализирует, что вместо этого выполнения команды один раз для каждого файла, он должен попытаться ввести как можно больше имен файлов. Например, он может выполнить mv -n Child1 / as.avi Child1 / many.avi Child1 / matching.avi Child1 / filenames.avi Child1 / as.avi Child1 / possible.avi.
Если вы хотите увидеть, что может делать такая команда , вы всегда можете написать -exec echo mv
вместо -exec mv
Примечание 1: В имени '* .avi'
используются одинарные кавычки, поэтому текст *.avi
дословно передается команде find
, а не потенциально расширяется оболочкой в имена файлов, прежде чем он попадет в команду find
.
Примечание 2: если у вас есть несколько имен файлов в разных каталогах, но с одним и тем же именем, команда mv
переместит все эти файлы в один каталог, а файлы с одинаковыми имена будут перезаписывать друг друга. Вы можете избежать этого, используя команду mv -n
(без режима затирания)
Вы не получаете ошибку при запуске pacman, потому что эти библиотеки не являются частью официальных репозиториев, они являются зависимостями пакета AUR .
Yaourt не ваш менеджер пакетов, это помощник AUR:используйте его для помощи в установке и управлении пакетами AUR (или лучшее решение, используйте тот, который не ненадежный и глючный , как и auracle ).
Вы исправите ошибки, пересобрав пакет AUR, ffmpeg0.10 и необходимые зависимости.