Bash 我想要一个脚本,它总是知道从一个文件夹播放的最新媒体,并播放下一个

Bash 我想要一个脚本,它总是知道从一个文件夹播放的最新媒体,并播放下一个,bash,Bash,例如:我跑步 ./latest /media/mytvshow/season1 它会自动检查该文件夹中最新播放的文件,并播放序列中的下一个文件 为此,我计划这样做: 1-一个for循环,它将为文件夹中的所有文件逐分钟提供新的时间戳。这个循环只能运行一次(我没有想到任何更快的想法)。差不多 for file in `ls -l | tail -n +2 | cut -c 46-` do touch $file sleep 1m done 2-正确设置时间戳后,脚本将在每次调用时运行此脚本 ME

例如:我跑步

./latest /media/mytvshow/season1
它会自动检查该文件夹中最新播放的文件,并播放序列中的下一个文件

为此,我计划这样做:

1-一个for循环,它将为文件夹中的所有文件逐分钟提供新的时间戳。这个循环只能运行一次(我没有想到任何更快的想法)。差不多

for file in `ls -l | tail -n +2 | cut -c 46-`
do
touch $file
sleep 1m
done
2-正确设置时间戳后,脚本将在每次调用时运行此脚本

MEDIA=`ls -lt | cut -c 46- | head -2 | tail -1`
mplayer $MEDIA
touch $MEDIA
所以我问两件事:

a。我是在用一种好方法来做这件事,还是有一种更快更好的方法


b。ls-l | tail-n+2 | cut-c46-命令似乎不起作用。为什么?

如果您喜欢使用自定义脚本开始播放媒体,为什么不将最后一次播放的文件名放在一个(可预测的命名、隐藏)文件中?e、 g

echo$now\u playing>。上次播放

假设您总是希望按
最旧,…,最新的顺序播放文件,您可以使用
ls-tr
以适当的顺序获取文件名,并使用
.last played
的内容跟踪您最后播放的文件

编辑:这里有一个例子来说明我的意思。这很可怕,但似乎有效

提示:更改
play
函数以对要播放的文件执行任何操作

#!/bin/bash

T=./.last-played

play () {
    echo "$@" > $T
    echo "mplayer $@"
}


# if we find no tracking data, this will be our default: the oldest file
next=$(ls -tr1 | head -1) 

if [ -f "${T}" ]; then
    # Found a tracking file: does it have a valid filename?
    lastplayed=$(cat ${T})
    if [ -f "$lastplayed" ]; then
        # It was a real file: find the next-oldest one
        lastf=""
        while read line; do
            if [ "x$lastplayed" = "x$line" ]; then
                next=$lastf
                break
            else
                lastf=$line
            fi
        done <<<"$(ls -tr1)"
    fi
fi

if [ "x" = "x$next" ]; then
    echo "Finished!"
    exit
fi
play $next
#/bin/bash
T=./。上次播放
玩(){
回声“$@”>$T
回显“mplayer$@”
}
#如果我们没有找到跟踪数据,这将是我们的默认值:最旧的文件
下一步=$(ls-tr1 | head-1)
如果[-f“${T}”];然后
#找到跟踪文件:文件名是否有效?
lastplayed=$(类别${T})
如果[-f“$lastplayed”];然后
#这是一个真实的文件:找到下一个最旧的文件
lastf=“”
读行时;做
如果[“x$lastplayed”=“x$line”];然后
下一个=$lastf
打破
其他的
lastf=$line
fi

完成了两个想法:(1)Python不太容易出错,(2)您也可以根据文件名选择播放哪个文件,而不仅仅是修改时间。或者他们的创作时间也是如此。这里有很多可能性…当然,所有这些在Python中也很容易访问。我没有mplayer,也没有mp3文件,所以请检查
ls-1t | xargs-I'{}'bash-c'touch{};mplayer{}
正在为您工作,不管您是不是sanmiguel,谢谢您的回答。我是一名语言学家,我只懂一点编程,所以我有了一个想法,创建一些小的,甚至是愚蠢的脚本来简化我的日常工作,作为练习基本编程的一种形式。我承认我只理解了你代码的一些部分,所以我将研究它,并将其投入使用,看看会发生什么。谢谢。嗨@Ivã,我很高兴你发现我的答案很有用!将脚本放在一起简化重复的任务是学习编程的一个好方法。继续前进,不要害怕尝试,最重要的是,享受它!在我的回答中你有什么特别需要帮助的吗?