Linux中如何正确删除:find-rm

假如当前目录下有诸多fastq文件想要删除,通常我们选择这样:

直接删除

1
rm *-temp.fastq

但是如果一时疏忽输入rm -temp.fastq(号和-号之间多了空格),那结果就惨了…..
而如果结合Linux常用命令之find命令那么一切就简单多了

1
2
3
find . -name "*-temp.fastq" -exec rm -i {} \;
#or
find . -name "*-temp.fastq" | xargs rm

-exec 表示由find找到的匹配项会作为”-exec后面设定的命令”的参数({}中输入值)
-i 交互删除
若想要删除文件夹,则-delete 代替-exec -rm {}

打印删除rm命令并检查

1
2
3
4
5
6
7
8
9
find . -name "*-temp.fastq" | xargs -n 1 echo "rm -i" > delete-temp.sh
cat delete-temp.sh
rm -i ./zmaysA_R1-temp.fastq
rm -i ./zmaysA_R2-temp.fastq
rm -i ./zmaysC_R1-temp.fastq
rm -i ./zmaysC_R2-temp.fastq
bash delete-temp.sh
#or
find . -name "*.fastq" | xargs -n 1 -P 4 bash script.sh

-n 1 表示find擦找到的参数每次只有一个输入到xargs中
-P 并行运算

将删除文件放入临时文件夹(tmp)

1
myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }
tiramisutes wechat
欢迎关注