解決策

解決策

フォルダ内のフォルダ内にフォルダを含むフォルダがあります。一部のフォルダにはファイルがあり、一部のフォルダにはありません。ファイルがないすべてのディレクトリを見つけて削除して、ホームフォルダを整理したいと思います。たとえば、次のようになります。

だから私がこれから始めるなら:

  • mainFolder
    • folder1
      • folder1(空)
      • folder2
        • file.txt
      • folder3(空)
    • folder2
      • folder1(空)
      • folder2(空)
      • folder3
        • folder1
          • folder1(空)
    • folder3
      • folder1
        • file.txt

私はそう終わらなければならない:

  • mainFolder
    • folder1
      • folder2
        • file.txt
    • folder3
      • folder1
        • file.txt

だから:

  • /mainFolder/folder1/folder1ファイルがないため削除されました
  • /mainFolder/folder1/folder3ファイルがないため削除されました
  • /mainFolder/folder2ファイルがなく、サブフォルダもすべて空で削除されました。

これが意味があることを願っています...

mainFolder私の唯一のアイデアは、各サブフォルダから始まり、再帰的に下に移動して空のサブフォルダを削除することです。

ベストアンサー1

これがあなたの要件を満たしていることを確認してください。

find mainFolder -depth -empty -type d -exec rmdir {} \;

mainFolder深さ優先トラバーサルを使用して空のディレクトリを見つけ、そのディレクトリを削除する必要があります。深さ優先トラバーサルを実行するため、子ディレクトリを削除するときに親ディレクトリが空の場合は空であるとfind認識し、一緒に削除します。

おすすめ記事