绕过ls参数限制

时间:2016-04-05 22:54:01

标签: bash

所以,我需要从某个目录以相反的顺序列出一堆文件。唯一的问题是目录中有很多文件(因为我在目录中反编译视频帧以反转整个视频),当我运行ls时,我收到一条错误/bin/ls argument list too long。我想知道如何解决这个错误?

操作系统:Ubuntu 14.04

2 个答案:

答案 0 :(得分:1)

如果ls不起作用,find -type f通常是您的朋友(也可以使用-print0等内容来避免异常文件名出现问题。)

答案 1 :(得分:1)

我假设您使用的是

ls -1 -r *.jpg

生成反向排序的图像列表。由于Bash对文件名扩展(aka globs)本身进行排序,因此只需反转*.jpg的扩展即可获得相同的效果。这是一种方法:

printf '%s\n' *.jpg | tac

如果你没有tac,你可以用纯粹的Bash完成所有这些:

images=( *.jpg )
for (( i=${#images[*]}-1 ; i>=0 ; i-- )) ; do
    printf '%s\n' "${images[i]}"
done