フォルダ内のフォルダ内にフォルダを含むフォルダがあります。一部のフォルダにはファイルがあり、一部のフォルダにはありません。ファイルがないすべてのディレクトリを見つけて削除して、ホームフォルダを整理したいと思います。たとえば、次のようになります。
だから私がこれから始めるなら:
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
認識し、一緒に削除します。