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

Я хотел бы знать, как я могу переместить все файлы из папки A в подпапку папки A, кроме файла .html с командной строкой.

Предположим, я нахожусь в dist и 50 файлов и 5 папок. Теперь я хотел бы переместить все 50 файлов и 4 папки в одну из подпапок внутри папки dist без необходимости записывать все имена файлов.

1
задан 15 July 2020 в 16:41

2 ответа

Текущий каталог:

$ 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
1
ответ дан 30 July 2020 в 22:07

Вы можете использовать find с -not -name "..." и -exec mv :

find . -maxedpth 1 \
  -not -name "subfolder" \
  -not -name "*.html" \
  -exec mv -t subfolder {} + \;
0
ответ дан 30 July 2020 в 22:07

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

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