親ディレクトリを削除しますが、その内容はすべて保持します。現在私のディレクトリ構造
$ /usermanagement/usermanagement/file1
親ディレクトリを削除した後、以下の構造のように見たい
$ /usermanagement/file1
質問が正しく理解できなかったのかもしれません。しかし、私があなたの質問から集めたものの答えは、
現在のディレクトリにいるとします。名前は
nested
で、親ディレクトリの名前はtest
です。
$ cp -Rp . ../;cd ../;rm -rf nested
cp -Rp . ../
-ディレクトリ、ネストされたディレクトリ、隠しファイルを含むすべてのファイルをコピーします。どこ、
-R
フラグは「ディレクトリを再帰的にコピーする」ために使用されます
-p
は、「指定された属性(デフォルト:モード、所有者、タイムスタンプ)を保持します(可能な場合、追加の属性:コンテキスト、リンク、xattr、すべて)」、
.
は、現在のディレクトリをソースとして示すためのものです
..
は、宛先としての親ディレクトリを示します。
cd ../
-現在のディレクトリから親ディレクトリに移動します
rm -rf nested
-これにより、ディレクトリ、ネストされたディレクトリ、および隠しファイルを含むすべてのファイルが削除されます。
出典:マニュアルページ
(削除するディレクトリが現在の作業ディレクトリであると仮定)
zsh
の場合:
cd -P . &&
mv -- *(D) .. &&
cd -P .. &&
rmdir ~-
bash
の場合:
cd -P . &&
(shopt -s dotglob && mv -- * ..) &&
cd -P .. &&
rmdir "$OLDPWD"
cd -P .
は、現在の作業ディレクトリが$PWD
はシンボリックリンクなしです。非表示のものも含めて、すべてのファイルとディレクトリを親に移動したい(したがって、(D)
グロビングフラグとdotglob
オプション)。
それで問題がなければ、現在のディレクトリを1レベル上に変更し、以前のディレクトリを削除します。
(-i
オプションをmv
に追加すると、ファイルを上書きする移動をキャンセルすることができます)
上記よりも簡単な解決策は次のとおりです。
mv /usermanagement/usermanagement /usermanagement.tmp
rmdir /usermanagement
mv /usermanagement.tmp /usermanagement
つまり下のusermanagement
ディレクトリを一時的な名前でルートディレクトリに移動し、(現在は空の)上のusermanagement
ディレクトリを削除して、最後に/usermanagement.tmp
ディレクトリの名前を/usermanagement
に変更します。 。
おそらく最も簡単な解決策:
$ mv /usermanagement/usermanagement/* /usermanagement/ && rmdir /usermanagement/usermanagement