我想从 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