a 文件夹下子文件夹跟文件
b
c
1.txt
2.txt
只删除a文件夹下的子文件夹跟子文件夹里面的文件,a 跟文件不能删除
可以用脚本
#! /usr/bin/bash
for fs in $(ls $1);do
if [ -d $1/$fs ];then
cd $1 && rm -rf $fs;
fi;
done;
然后执行 xxx.sh /path/to/dir
如果只是简单粗暴的删除,可以参考“张京”的回答
rm -rf a/*/
如果需要更细化的筛选,比如正则匹配文件名,或只删除某段时间的文件,可以在下面两个命令里增量加选项,具体参考 man find
找出子目录并递归删除find ./ -type d -exec rm -rf {} \;
找出当前层级的结尾带"/"(也就是目录)的文件并递归删除find ./ -mindepth 1 -exec rm -rf {}/ \;
这两个都是一行命令,不过都会返回非0返回码,因为搜索结果包含子目录和子目录内文件,删除子目录后,执行到子目录内文件时会找不到,所以返回1,不过不影响整体运行。
如果对程序执行状态有要求,可以参考“ssseerr999”的回答写脚本,对于其他需求也更灵活
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答795 阅读✓ 已解决
2 回答3.2k 阅读