旋转顺序的文件名

时间:2014-06-15 17:14:54

标签: linux shell ls

我正在使用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

即。每次运行该函数时,我都需要最后一次运行的第一个文件...

1 个答案:

答案 0 :(得分:0)

不确定为什么您的音乐播放器需要依赖,但您可以尝试这样的事情

#!/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
...

如果你想让它每次都改变,你可以把它包装在可以保存以前状态的东西中。