给个例子吧:

思路大概是找到所有的目录,然后用管线传给删除的命令

查看当前目录下的文件和文件夹:

xxx@xxx:~/xxxx# ls
lung_001         lung_015         lung_027         lung_038         lung_048
lung_001.nii.gz  lung_015.nii.gz  lung_027.nii.gz  lung_038.nii.gz  lung_048.nii.gz  
1. find

首先我们要先把所有的文件夹筛选出来,于是我们可以借助find指令:

find . -type d

查找.(当前目录) 种类为 d(目录) 的所有文件(夹)

.
./lung_001         
./lung_015         
./lung_027         
./lung_038         
./lung_048

当时他现在把当前目录.(当前目录) 也包括起来了

2. sed

接下来只要把. 过滤掉就行了,这里我们借用 sed 指令

sed -n '2,$p'
-n 仅输出符号条件的行
p 打印内容
2, $ 第2行到最后一行

借助管线|,我们来过滤掉第一行.

find . -type d | sed -n '2,$p'

好的第一行已经过滤掉了

./lung_001         
./lung_015         
./lung_027         
./lung_038         
./lung_048
3. rm -rf

这个是删除文件 rm -rf

4. xargs

接下来用 xargs 命令,用来组合多个命令

find . -type d | sed -n '2,$p' | xargs rm -rf

这样就可以了,删除当前目录下的所有文件夹,但不删除文件

参考自:

https://zhidao.baidu.com/question/1604227242476105907.html

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:1 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐