如何在shell脚本中列出名称中包含相同字符串的目录?

时间:2014-04-29 07:28:24

标签: shell sh busybox

我在/ var / log /目录中有msgbak-.tar.gz文件 如何使用ls -lrt命令列出所有这些内容 我使用了以下脚本,但它没有工作

LGNAME="/var/log/msgbak"
touch $LGNAME-$(date)
$(ls -lrt $LGNAME*)
OR
$(ls -lrt {$LGNAME*})

请问任何帮助指针/指标?

我正在尝试跟随,
LGNAME="/var/log/msgbak" MAX_LOG_BACKUP=10

for taredfile in $(ls -lrt $LGNAME*)
do
if [ $(ls -lrt $LGNAME* | wc -l) -lt "$MAX_LOG_BACKUP" ]; then
echo
break;
fi
rm $taredfile
done

这就是我的尝试,我知道这不是最好的,但我不知道那里出了什么问题。

1 个答案:

答案 0 :(得分:1)

以下方法可以正确地获取此类文件的数量。

ls $LGNAME* | wc -l

如果您希望它们以反向时间戳顺序排序,这应该可以正常工作:

ls -rt $LGNAME*

要回答更一般的问题,你可以做这样的事情。我不确定你需要做什么修改才能使它在非bash shell中工作。

LGNAME="/var/log/msgbak"
count=$(ls $LGNAME* | wc -l)

if [ "$count" -gt 10 ]; then
    ls $LGNAME* | head -n 1 | xargs rm
fi