我想知道如何使用命令行将文件夹 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
您可以使用find
with-not -name "..."
和-exec mv
:
find . -maxedpth 1 \
-not -name "subfolder" \
-not -name "*.html" \
-exec mv -t subfolder {} + \;