更新:@ctrl-alt-delorが述べたように、これは私が使用しているファイルシステム(fuseblk)が「大文字と小文字の保存」ですが「大文字と小文字を無視する」ためです。
=====
私はこれが大きなユースケースではないことを知っていますが、これはたくさん行われているので、少なくとも問題の原因を理解しています。
mv
およびmkdir
/またはプロセスに関連するシェルの他のエントリは大文字と小文字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
1つのコマンドでこれを行う簡単な方法はありますか?
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
に無視できます。 Gnuはmv
これをサポートしています。