Если Вы хотите переместить все файлы в иерархии каталогов к единственному целевому каталогу в ударе ≥4 (помещенный shopt -s globstar
в Вашем ~/.bashrc
) или zsh:
mkdir ~/new-directory
mv -i **/*.xxx ~/new-directory
В других оболочках:
mkdir ~/new-directory
find . -name '*.xxx' -exec mv -i {} ~/new-directory \;
Как считать это find
команда:
.
: пересеките текущий каталог-name '*.xxx'
: действие на файлах, имя которых соответствует этому шаблону-exec … \;
: выполните эту команду на каждом файле, заменив {}
путем к файлуСуществует более сложное использование команды find
это быстрее, если у Вас есть много файлов, поскольку это не должно вызывать отдельное mv
процесс для каждого файла:
find . -name '*.xxx' -exec sh -c 'mv -i "$@" "$0"' ~/new-directory {} +
+
в конце говорит find
вызвать команду на несколько файлов за один раз. С тех пор find
может только поместить имена файлов в конце командной строки, и mv
потребности иметь целевой каталог в последний раз, мы используем промежуточную оболочку для реконструкции аргументов ("$0"
первый аргумент оболочке, ~/new-directory
, и "$@"
последующие аргументы, прибывающие из find
расширение {}
).
Ваш раздел USB fat32 не обрабатывает все метаданные. Вместо-av пробуют-rv.
rsync назвали опцию - modify-window=NUM, который можно использовать для сокращения точности сравнения метки времени. Попробуйте его - modify-window=1. Опция была создана для точно этой цели.
rsync может также попытаться зафиксировать другие метаданные, как принадлежность файла, которая потеряна на FAT32 и друзьях, таким образом, у Вас могут все еще быть проблемы даже когда с помощью - modify-window=1