Bash move *到子文件夹失败:无法移动到自身的子目录

时间:2017-04-06 15:51:36

标签: bash

我有一个包含多个文件的文件夹,我想将其移动到子文件夹:

mkdir subfolder
mv ./* subfolder

但是当我这样做时,我得到了:

mv: cannot move 'subfolder' to a subdirectory of itself

我怎样才能避免这种情况?

5 个答案:

答案 0 :(得分:3)

使用extglob即可:

shopt -s extglob

mv !(subfolder) subfolder

全局表达式!(subfolder)将匹配除subfolder之外的所有内容。

答案 1 :(得分:0)

我去了:

find . -maxdepth 1 -not -name subfolder -exec mv -t subfolder {} +

虽然我仍然发现语法非常难以理解......

答案 2 :(得分:0)

嗯,我有类似的问题。尝试了几次!但是我最后还是

mkdir ../subfolder
mv * ../subfolder
mv ../subfolder .

答案 3 :(得分:0)

这是在Windows Subsystem for Linux(WSL)上吗?

如果是这样,Windows会将目录Jerry识别为等同于目录jerry,并且WSL遵循Windows的某些兼容性规则。

如果要将目录Jerry重命名为jerry,可以执行以下操作:

mv Jerry placeholder_name
mv placeholder_name jerry

答案 4 :(得分:0)

有一个简单的解决方案

mv * subfolder | mkdir subfolder

它会将文件夹中的所有文件移动到子文件夹中,不会出现任何错误。