如何将一个大写字母开头的目录重命名为同名的小写字母?

如何将一个大写字母开头的目录重命名为同名的小写字母?

更新:正如 @ctrl-alt-delor 提到的,这是因为我所在的文件系统(fuseblk)是“保留大小写”但“忽略大小写”。

=====

我知道这不是一个大用例,但至少了解问题的根源,因为我经常这样做:

mvmkdir/或进程中涉及的 shell 中的其他内容mkdir区分大小写,并导致我出现错误:

x@host :/ $ ls
Dir 

x@host :/ $ mv Dir/ dir
mv: cannot move 'Dir/' to a subdirectory of itself, 'dir/Dir'

x@host :/ $ mkdir dir
mkdir: cannot create directory ‘dir’: File exists

有没有一个简单的技巧可以让这个在一个命令中完成?

PS:我发现最快的方法是

mkdir tmp ; cd tmp ; mkdir dir ; mv ../Dir/* dir/ ; cd .. ; rm -r Dir ; mv tmp/dir . ; rm -r tmp

配置:Ubuntu 18.04

答案1

首先,您的主目录不应该使用胖文件系统;使用ext4。

这是我所知道的最简单、最快的方法(它的时间和内存复杂度为 O(1):无复制)

mv -T Dir dir-tmp-name; mv -T dir-tmp-name dir

如果您mv不支持-T,那么您可以不安全地忽略它。 Gnumv确实支持它。

相关内容