Как я могу использовать команду удара для перемещения ряда каталогов от одного местоположения до другого

При использовании командной строки я могу использовать

for i in *txt; do mv "$i" /home/some_user/some_folder/"$i"; done

перемещать группу файлов.

Как я могу переместить все каталоги в текущий каталог с помощью этого того же типа команды?

0
задан 26 September 2017 в 13:21

2 ответа

Можно просто добавить условие проверить, является ли объект папкой.

for i in *; do
  if [ -d "$i" ] ; then
    mv "$i" /home/some_user/some_folder/"$i"
  fi
done
1
ответ дан 2 November 2019 в 05:11

С сопоставлением с образцом “шарика” оболочки

mv -t /home/some_user/some_folder -- */
  • -t сообщает mv перемещать все перечисленные объекты в каталог, обозначенный путем после -t.

  • */ соответствия и расширены до названий всех (нескрытых) каталогов в текущем каталоге. Отметьте финал / это ограничивает соответствия шарика каталогами! (Если необходимо включать имена скрытого файла, запускающиеся с a ., включите dotglob опция с shopt -s dotglob.)

С find

find . -minepth 1 -maxdepth 1 -type d -exec mv -t /home/some_user/some_folder -- {} +
  • -mindepth 1 -maxdepth 1 ограничивает поиск содержанием данного каталога (здесь: .).

  • -type d ограничивает соответствия каталогами. Это включает скрытые каталоги; исключить их использование ! -name '.*'.

  • -exec COMMAND [ARGUMENTS...] {} + выполнения COMMAND с ARGUMENTS... (если таковые имеются), и добавляет пути всех подобранных файлов.

1
ответ дан 2 November 2019 в 05:11

Другие вопросы по тегам:

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