想在linux上批量删除文件

想在linux上批量删除文件

初见你 发布于 2021-11-27 字数 242 浏览 797 回复 11

某文件夹里面有一批文件,文件名的前六位,前6位都是数字,后面的是一大串字符串,这是文件名,文件名。然后现在需要删除这些文件里面文件名前6位数字小于140414的所有文件,然而我并不熟linux,求赐教。文件挺多的,300多万条数据。

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(11

瑾兮 2021-12-01 11 楼

复杂的逻辑可以试试用pyhton一类的脚本语言写,实际删除前只打印出列表不做实际删除,或者将文件移动到一个地方而不是删除

归途 2021-12-01 10 楼

你的数字 如果没猜错的应该是日期 使用find查找早于这个日期的即可

三月梨花 2021-12-01 9 楼

我是这样写的,正在测试,然而数据太多,就ls这个命令都要等十几分钟。就想输出几条看看 符不符合。应该 接近600万条。,刚刚有位写shell的小哥。

如此安好 2021-12-01 8 楼

然而我并不敢这样测,还是乖乖用shell慢慢测,我没自信啊,万一错了就携程了。

风苍溪 2021-12-01 7 楼

如果是删除比140414文件老的暑假文件,可以用find

find ! -newer   140414aaa| xargs rm -f

墨洒年华 2021-12-01 6 楼

明显不可行,这种正则判断大小本身就会有问题

天涯离梦残月幽梦 2021-12-01 5 楼

知道方法,但是不熟,

基本命令:

ls | grep "1[0-4]0[0-4][0-1][0-4]*" | xargs rm  #大致是这个样子,没做验证

grep参考: http://lq2419.blog.51cto.com/1365130/1238880

梅窗月明清似水 2021-12-01 4 楼

笨办法

排序,管道给grep -n ,140414这一行的行号出来了。写个循环小于这一行的删掉

眼眸 2021-12-01 3 楼

@PYPlus
81确实是6,我记错了,下标含头不含尾

别再吹冷风 2021-12-01 2 楼

我先这样写了,然后等老大来,不想携程

緦唸λ蓇 2021-11-29 1 楼
#!/bin/bash

for i in `ls|grep '^[0-9]{6}.*'`
do
    s=${i:0:6}
    if [ "$s" -lt "140414" ]
    then
        rm $i
    fi
done

你可以把上面的 rm $i更改为 echo >> filename
重定向到文件中 然后编辑文件查看内容是不是正确的. 正确了

cat filename|xargs rm 这样就很安全了