如何在没有文件全名的情况下检查文件是否存在

时间:2014-03-17 18:29:57

标签: linux shell

我正在尝试制作一个更新某些列表的Linux脚本,并在其上加上时间戳

我正在努力的部分是:

for dir in $(ls)
do
    echo $dir
done

我明白了:

noreply-unsch-simco 2014-03-17-14:20:41.txt

noreply-unsch-simcoe 2014-03-17-14:20:41.txt

noreply-unsch-sudbury-nbay 2014-03-17-14:20:41.txt

noreply-unsch-test 2014-03-17-14:20:41.txt

noreply-unsch-thunderbay 2014-03-17-14:20:41.txt

noreply-unsch-toronto 2014-03-17-14:20:41.txt

noreply-unsch-york 2014-03-17-14:20:41.txt

我想要做的是删除旧文件(如果它们存在),因为每次我的脚本运行时,它都会生成一个带有新时间戳的新文件。

所以基本上我想知道如何仅使用名称的开头部分(时间戳之前的所有内容)来搜索文件。

我是新手。请帮助我

编辑: 好的,所以我查看了评论但是我收到了错误。这是我的完整代码。

#!/bin/bash
cd /var/lib/mailman/lists/
variable=$(date +"%Y-%m-%d-%H:%M:%S")

for dir in $(ls)
do
    echo $dir
    rm /root/Desktop/Dan/Lists/$dir-*
    echo echo | cat | list_members $dir/ > /root/Desktop/Dan/Lists/$dir" "$variable.txt
done

我收到目录未找到错误。

编辑我只需要拿走' - '

 rm /root/Desktop/Dan/Lists/$dir*

谢谢!

1 个答案:

答案 0 :(得分:5)

如果要删除以特定扩展名开头的所有文件,可以执行以下操作:

rm noreply-unsch-*

这将删除与该模式匹配的所有文件。 如果你想做的不仅仅是去除;你可以把你的循环变成:

for filename in noreply-unsch-*.txt; do
    #something
    rm $filename
done