bash-删除所有目录(和内容),但不删除 pwd 中的文件

bash-删除所有目录(和内容),但不删除 pwd 中的文件

我想从 pwd 中删除所有目录,但保留 pwd 中的文件。如果我的 pwd 的内容是:

mydir1
mydir2
myfile1
myfile2

那么我希望只剩下

myfile1
myfile2

我认为我需要使用rm -r -i

我对么?

答案1

否,这会给您“缺少操作数”,因为您没有指定任何内容。放置*也会提示文件。

我会尝试:

find -mindepth 1 -maxdepth 1 -type d -exec rm -r {} \;

mindepth 1将从.结果中排除,将maxdepth 1排除在无论如何都会被删除的目录下尝试执行的操作(因此会产生警告)。但在实践中,如果您同意出现一些“无辜”的警告,您可以将它们都排除在外。

答案2

我在某个地方找到了这个:

rm -r */

似乎是最简单的方法。按照你的例子,你必须确认每个案例,如果你有 5 个文件,那就没问题,但对于更大的文件结构,交互模式不是可行的方法……只是建议,如果是重要信息,请备份……

答案3

使用

rm -rf ./*/

这样可以避免交互模式并仅删除本地目录中的目录。

答案4

you can also try in this way to delete only all folders not files from any location in linux.

    #delete only all dir and don't touch files
    #!/bin/bash
    for dir in `ls -l | grep ^d | awk '{print $9}'`
    do
    echo "going to delete $dir " `rm -rf $dir`
    done
    ls

相关内容