Как я могу переместить файлы типом рекурсивно из каталога и его подкаталогов к другому каталогу?

Вы не можете экспортировать функции, не в способе, которым Вы описываете. Оболочка только загрузится ~/.bashrc файл на запуске интерактивной оболочки (ищут "Вызов" в странице справочника удара).

То, что можно сделать, создают "библиотеку", которая загружается, когда Вы запускаете программу:

source "$HOME/lib/somefile"

И поместите свои неинтерактивные функции и настройки туда.

31
04.09.2010, 04:47
4 ответа

можно использовать, находят с xargs для этого

find /thisdir -type f -name "*.ogg" -print0 | xargs -0 -Imysongs mv -i mysongs /somedir

-I в вышеупомянутой команде говорит xargs, какую замещающую строку Вы хотите использовать (иначе, это добавляет аргументы в конец команды).

ИЛИ
В Вашей команде просто пытаются переместиться '{}' после mv команда.

find /thisdir -type f -name '*.ogg' -exec mv -i {} /somedir \;

24
27.01.2020, 19:38
  • 1
    не забывайте брать резервное копирование прежде, чем попробовать выше команд :-). –  Hemant 04.09.2010, 00:06
  • 2
    Btw, для первого-print0 для находки и-0 для xargs должен использоваться в качестве возможного, для предотвращения пробела в проблемах имени файла. –  maxschlepzig 04.09.2010, 00:10
  • 3
    @maxschlepzig: положительная сторона. Я отредактирую. –  Hemant 04.09.2010, 00:13
  • 4
    я настоятельно рекомендую использовать mv -i здесь, таким образом, Вы не рискуете перезаписывать файлы, если что-то неожиданное происходит. –  Gilles 'SO- stop being evil' 04.09.2010, 00:41
  • 5
    с mv от ядра гну utils Вы может использовать mv -t <targetdir> и + вместо \; –   04.09.2010, 01:29
find /thisdir -type f -name "*.ogg" -exec mv {} /somedir \;

Вы отчасти обменялись аргументами в пользу mv

10
27.01.2020, 19:38

В zsh или ударе 4, для сбора всех *.ogg файлы в /somedir:

mv /thisdir/**/*.ogg /somedir

Если Вы хотели воспроизвести иерархию каталогов: (предупреждение, введенное непосредственно в браузер)

rsync -a --prune-empty-dirs --include='*/' --include='*.ogg' --exclude='*' /thisdir /somedir
9
27.01.2020, 19:38

я получил ошибку "Каталог не пуст". чтобы исправить это, я запускаю:

find. -name 'node_modules' -type d -prune -exec mkdir -p./another/dir/{} \; -exec mv -i {}./NODE_MODULES/{} \;

это сохранит структуру каталогов.

0
01.07.2021, 16:51

Теги

Похожие вопросы