遍历目录下的某个文件并删除

目录

需求

编写过程

演示


需求

        大家在学习时可能会有一个自己的小目录,里面放着各种奇葩代码,有天突然发现,没有空间了,这时候发现遗留了很多的可执行文件,大大的浪费了我们的空间,但是由于层数深,数量多一个一个的删除很麻烦这时候我们的脚本就登场啦。

编写过程

#!/bin/bash  
  
# 使用find命令查找所有名为a.out的文件,并使用-exec选项删除它们  
find . -name "a.out" -type f -exec rm {} \;  
  
echo "所有a.out文件已被删除。"

太单调了我想在打印时加上删除目标的目录

#!/bin/bash  
  
# 使用find命令查找所有名为a.out的文件,并打印其绝对路径然后删除它们  
find . -name "a.out" -type f -exec bash -c 'echo "正在删除: $0"; rm "$0"' {} \;  
  
echo "所有a.out文件已被删除。"

我还想统计删除文件的数量

#!/bin/bash  
  
# 初始化计数器  
count=0  
  
# 使用find命令查找所有名为a.out的文件,并打印其绝对路径然后删除它们  
find . -name "a.out" -type f -exec bash -c 'echo "正在删除: $0"; rm "$0"' {} \; -print | while read file; do  
    # 对于每个找到的文件,增加计数器  
    ((count++))  
done  
  
# 打印被删除的文件数量  
echo "共删除了 ${count} 个 a.out 文件。"

我想递归的删除

#!/bin/bash  
  
# 初始化计数器  
count=0  
  
# 使用find命令递归查找所有名为a.out的文件,并打印其绝对路径然后删除它们  
find . -name "a.out" -type f -exec bash -c 'echo "正在删除: $1"; rm "$1"' -- {} \;  
  
# 统计被删除的文件数量(使用find的-print和wc命令)  
count=$(find . -name "a.out" -type f -delete | wc -l)  
  
# 打印被删除的文件数量  
echo "共删除了 ${count} 个 a.out 文件。"

成功删除了,但是有bug没有打印路径和统计信息

#!/bin/bash  
  
# 初始化计数器  
count=0  
  
# 使用find命令递归查找所有名为a.out的文件,并打印其绝对路径然后删除它们  
while IFS= read -r -d '' file; do  
    echo "正在删除: $file"  
    rm "$file"  
    ((count++))  
done < <(find . -name "a.out" -type f -print0)  
  
# 打印被删除的文件数量  
echo "共删除了 ${count} 个 a.out 文件。"

我想指定我要删除文件的名字

#!/bin/bash  
  
# 初始化计数器  
count=0  
  
# 遍历传入的每个参数(文件名)  
for filename in "$@"; do  
    # 使用find命令递归查找所有匹配的文件名,并打印其绝对路径然后删除它们  
    while IFS= read -r -d '' file; do  
        echo "正在删除: $file"  
        rm "$file"  
        ((count++))  
    done < <(find . -name "$filename" -type f -print0)  
done  
  
# 打印被删除的文件数量  
echo "共删除了 ${count} 个文件。"

演示

哦吼完美。

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宇努力学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值