我正在使用mpc功能的音乐播放器,我想实现一个" next-folder"功能。我需要以这种方式改变ls输出的顺序......
如果我在目录中有这些文件......
folder
|_file 1
|_file 2
|_file 3
|_file 4
|_file 5
我想要一个函数,按照以下顺序返回第一次运行文件名:
folder
|_file 1
|_file 2
|_file 3
|_file 4
|_file 5
下一次,按此顺序
folder
|_file 2
|_file 3
|_file 4
|_file 5
|_file 1
下一次,按此顺序
folder
|_file 3
|_file 4
|_file 5
|_file 1
|_file 2
下一次,按此顺序
folder
|_file 4
|_file 5
|_file 1
|_file 2
|_file 3
即。每次运行该函数时,我都需要最后一次运行的第一个文件...
答案 0 :(得分:0)
不确定为什么您的音乐播放器需要依赖ls,但您可以尝试这样的事情
#!/bin/bash
print() {
[[ $1 -eq 0 ]] && ls -1 && exit 0
ls | tail -n "+$(($1+1))"
ls | head -n $1
}
[[ $1 =~ ^[0-9]+$ ]] || { echo "Usage: $0 [0-9]+" && exit 1; }
num_files=$(ls | wc -l)
print $(($1 % $num_files))
实施例
> ls
file\ 1 file\ 2 file\ 3 file\ 4 file\ 5
> ./.abovescript 0
file 1
file 2
file 3
file 4
file 5
> ./.abovescript 1
file 2
file 3
file 4
file 5
file 1
> ./.abovescript 2
file 3
file 4
file 5
file 1
file 2
...
如果你想让它每次都改变,你可以把它包装在可以保存以前状态的东西中。