我有这样的文件:
4-some file.mp4
1-another file.mp4
3-one more file.mp4
2-got another file.mp4
等等。
使用命令行播放 vlc 中的文件,使用vlc *
按未排序的顺序播放它们。
所以我尝试使用vlc“”播放文件vlc < <(ls * | sort -V)
不起作用。
尝试使用更改文件的时间戳
for i in "$(ls [!R]* | sort -V)"; do touch "$i";sleep 1; done
不起作用,因为"$(ls [!R]* | sort -V)"
将完整的文件列表作为一个参数表示,但我无法删除双引号,因为文件名称中包含空格。
答案1
这应该有效
find . -name "*mp4" -print0 | sort -Vz | xargs -0 vlc
答案2
GNU ls 也有-v natural sort of (version) numbers within text
,比如sort -V
.
文件名中的空格可以通过删除 , 中的空格来处理$IFS
(假设文件名中没有换行符):
$ IFS=$'\n'
$ for x in $(ls -v) ; do echo "> $x" ; done
> 1-aa aa
> 2-cc cc
> 10-bb bb
> 21-dd dd
$ vlc $(ls -v)
(如果您以交互方式执行此操作,IFS
之后将保持修改状态。)
有关 的更多信息IFS
,请参阅David Wheeler 关于文件名中特殊字符的著作