Как переместить несколько каталогов, но исключить файлы в текущем пути с похожим именем?

Скажем, у меня есть каталог, который содержит следующее:

dir1/
dir2/
dir3/
...
dir50/
dir1.txt
dir2.txt
dir3.txt
...
dir50.txt

Я использовал mv dir* /someotherpath/, затем переместил файлы *.txt обратно. Есть ли способ перемещать только каталоги?

3 ответа

Решение

Если ваша структура каталогов только 1 уровень mv dir*/ destination выполнит эту задачу.

Вы также можете использовать find выполнить эту задачу

find . -maxdepth 1 -type d -name "dir*"  -exec mv '{}' destination/ \;

+ Изменить maxdepth параметр или удалите его, если ваша структура каталогов имеет больше уровней

С такой файловой структурой:

/dir2move2
/dir
  /subdir1
  /subdir2
  index.js

Чтобы переместить только подкаталоги, а не файлы, которые вы могли бы просто сделать:

mv ./dir/*/ ./dir2move2

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