![シンボリックリンクにマップされたフォルダを除くすべてのフォルダを削除する[閉じる]](https://linux33.com/image/164965/%E3%82%B7%E3%83%B3%E3%83%9C%E3%83%AA%E3%83%83%E3%82%AF%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%AB%E3%83%9E%E3%83%83%E3%83%97%E3%81%95%E3%82%8C%E3%81%9F%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%82%92%E9%99%A4%E3%81%8F%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B%5B%E9%96%89%E3%81%98%E3%82%8B%5D.png)
未使用のフォルダを削除する必要があります。このフォルダを指すいくつかのシンボリックリンクがあります。私の要件は3段階です。
1)空でない最上位レベルの利用可能なすべてのフォルダをインポートします。
2) 空でないすべてのフォルダとそのフォルダを指すシンボリックリンクを取得します。
3) シンボリックリンクにないフォルダを削除します。では基本的には1~2段階です。
例:
フォルダA、B、CA、B、Cにはx、y、zなどの複数のフォルダがあります。
A(x1, y1,z1), B (x2, 2, z2), C(x3, y3, z3)
シンボリックリンクフォルダ1(別のシンボリックリンク2もあります)
a-->A/x1
b-->C/z3
c-->B/y2
まず、空でないすべてのアイテムをインポートしてから、これらのシンボリックリンクポイントをインポートする必要があります。最後に、フォルダを削除し(空ではない)、シンボリックリンクを指してはいけません。
投稿をほとんど見たことはありませんが、特定または特定の種類のフォルダを除外します。アドバイスしてください。
答え1
rmdir
このコマンドは、空のディレクトリのみを削除するという事実を利用できます。
最初は、find <folder structure root> -type d
すべてのフォルダのリスト(空または空ではない)を収集するために使用されました。一時ファイルに保存します。
次に、すべてのシンボリックリンクターゲットのリストを収集します。このリストを使用して、最初のリストから一致するフォルダをフィルタリングして、3番目のリスト(シンボリックリンク先ではないすべてのフォルダ)を作成します。
rmdir
次に、3番目のリストの各フォルダで実行し、「ディレクトリが空ではない」エラーを意図的に無視します。実際には空のフォルダのみが削除されます。