如何使用命令行将除 .html 文件之外的所有文件从一个文件夹移动到子文件夹?

如何使用命令行将除 .html 文件之外的所有文件从一个文件夹移动到子文件夹?

我想知道如何使用命令行将文件夹 A 中的所有文件(.html 文件除外)移动到文件夹 A 的子文件夹。

假设我在分布文件夹中有 50 个文件和 5 个文件夹。现在我想将所有 50 个文件和 4 个文件夹移动到其中一个子文件夹在 dist 文件夹中,而不必写下所有文件的名称。

答案1

当前目录:

$ 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/

临时启用 shell外接球并禁用历史替换:

$ shopt -s extglob; set +H

要将所有内容移动到名为“moveHere”的目录,但不包括html文件:

$ 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

答案2

您可以使用findwith-not -name "..."-exec mv

find . -maxedpth 1 \
  -not -name "subfolder" \
  -not -name "*.html" \
  -exec mv -t subfolder {} + \;

相关内容