Ubuntu – way reverse of what mkdir -p option does

bashcommand linedirectory

I Use Ubuntu 18.04, 19.10

using #!/bin/bash script how to remove the directories if they are empty from far end and stop at the directory having any file/files.

say.. I have created multiple directories with the below command

mkdir -p $HOME/.local/my/sub/directories/1/2/3

lateron during the time I have created lot of files in all directories starting from the directory "my to 1/2/3".

After some time I have deleted all the files in the directories "my", "directories", "1", "2", "3". Note that directory sub is having some files..

mkdir -p option will see if there are parent directories in the command mkdir -p $HOME/.local/my/sub/directories/1/2/3 and its safe.

Question: like above is there any command to see if the directories are empty and delete from far end and stop at directory sub I mean $HOME/.local/my/sub

Best Answer

The reversal of the mkdir -p command would be rmdir -p. rmdir -p will remove the folder structure up till the folder is not empty. You should be able to use rmdir instead of mkdir on your command:

rmdir -p $HOME/.local/my/sub/directories/1/2/3

You can also specify wildcards like if your $HOME/.local/my/sub/ contained like directories1, directories2 and directories3 for example, it could be done as:

rmdir -p $HOME/.local/my/sub/directories*/1/2/3

or

rmdir -p $HOME/.local/my/sub/*/1/2/3

If any folder as it is removing them contains data or another folder you will receive an error message that the directory is not empty and stops.

rmdir: failed to remove directory '/home/user/.local/my/sub': Directory not empty

Hope this helps!

Related Question