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



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

mkdir subfolder
mv ./* subfolder

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

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

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

使用extglob可以执行此操作:

shopt -s extglob
mv !(subfolder) subfolder

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

这是

在Windows Subsystem for Linux(WSL(上吗?

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

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

mv Jerry placeholder_name
mv placeholder_name jerry

有一个简单的解决方案

mv * subfolder | mkdir subfolder

它会将所有文件从文件夹移动到子文件夹,没有任何错误。

我选择了:

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

虽然我仍然觉得语法非常不可读......

嗯,

我也有类似的问题。带我试了几次!但我最终得到了

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

最新更新