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

Bash move*到子文件夹失败:无法移动到自身的子目录,bash,Bash,我有一个包含多个文件的文件夹,我想将其移动到子文件夹: mkdir subfolder mv ./* subfolder 但当我这样做时,我得到: mv:无法将“子文件夹”移动到其自身的子目录中 如何简单地避免这种情况?使用extglob可以做到: shopt -s extglob mv !(subfolder) subfolder 全局表达式!(子文件夹)将匹配除子文件夹之外的所有内容 find-maxdepth 1-非-name子文件夹-exec mv-t子文件夹{}+ 虽然我仍然觉得

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

mkdir subfolder
mv ./* subfolder
但当我这样做时,我得到:

mv:无法将“子文件夹”移动到其自身的子目录中


如何简单地避免这种情况?

使用
extglob
可以做到:

shopt -s extglob

mv !(subfolder) subfolder
全局表达式
!(子文件夹)
将匹配除子文件夹之外的所有内容

find-maxdepth 1-非-name子文件夹-exec mv-t子文件夹{}+


虽然我仍然觉得语法很难理解…

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

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

这是在Windows Linux子系统(WSL)上实现的吗

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

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

mv Jerry placeholder_name
mv placeholder_name jerry

我不确定我会称之为“失败”,确切地说。其他所有的东西都被移动了,不是吗?只是从命令中抑制stderr,它可能移动了所有的文件,
mv./*子文件夹2>/dev/null
是的,但是显然命令退出时状态为
0
我是说非零代码如何写mv!(子文件夹)bash中的子文件夹。。。它在“(“确保您正在使用extglob”)附近显示预期的命令。这不会移动以.For开头的隐藏文件,以启用点glob选项