Я хотел бы знать, как я могу переместить все файлы из папки A в подпапку папки A, кроме файла .html с командной строкой.
Предположим, я нахожусь в dist и 50 файлов и 5 папок. Теперь я хотел бы переместить все 50 файлов и 4 папки в одну из подпапок внутри папки dist без необходимости записывать все имена файлов.
Текущий каталог:
$ ls -F
1 12 15 18 20 23 26 29 31 34 37 4 42 45 48 50 8 b.html foldera/ folderd/
10 13 16 19 21 24 27 3 32 35 38 40 43 46 49 6 9 c.html folderb/ foldere/
11 14 17 2 22 25 28 30 33 36 39 41 44 47 5 7 a.html d.html folderc/ moveHere/
Временное включение оболочки extglob и отключение подстановки истории:
$ shopt -s extglob; set +H
Чтобы переместить все в каталог с именем «moveHere», исключая html files:
$ mv !(*.html|moveHere) moveHere/
Текущий каталог после перемещения файлов:
$ ls
a.html b.html c.html d.html moveHere
Проверьте новый каталог:
$ ls moveHere/
1 12 15 18 20 23 26 29 31 34 37 4 42 45 48 50 8 folderb foldere
10 13 16 19 21 24 27 3 32 35 38 40 43 46 49 6 9 folderc
11 14 17 2 22 25 28 30 33 36 39 41 44 47 5 7 foldera folderd
Вы можете использовать find
с -not -name "..."
и -exec mv
:
find . -maxedpth 1 \
-not -name "subfolder" \
-not -name "*.html" \
-exec mv -t subfolder {} + \;