我正在尝试制作一个更新某些列表的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*
谢谢!
答案 0 :(得分:5)
如果要删除以特定扩展名开头的所有文件,可以执行以下操作:
rm noreply-unsch-*
这将删除与该模式匹配的所有文件。 如果你想做的不仅仅是去除;你可以把你的循环变成:
for filename in noreply-unsch-*.txt; do
#something
rm $filename
done