2016-04-05 48 views
0

所以,我需要从一个特定的目录以相反的顺序列出一堆文件。唯一的问题是,目录中有很多文件(因为我正在反编译目录中的视频帧以反转整个视频),并且当我运行ls时,出现一条说明/bin/ls argument list too long的错误。我想知道如何解决这个错误?绕过ls参数限制

操作系统:Ubuntu的14.04

回答

1

如果ls不这样做,find -type f通常是你的朋友(也可以用这样的东西-print0避免问题异国情调的文件名)。

+0

是,'找到...'和'| xargs commands_to_execute {}'...'man xargs'获取更多细节。 ...或者'-exec'选项到'find'。祝你们好运。 – shellter

+0

'xargs' ...只有当你不能用'-exec ... {} \;'或'-exec .. {} \ +'做到这一点:)当然:) – Wrikken

+1

顺便说一句, 'd看起来很难找到一个能够逆转的转换器,但这不在话下),不要忘记引用任何名称匹配(所以'find -name * .jpg'仍然会给你带来问题,请使用'find -name '* .jpg'')。 – Wrikken

1

我假设你使用的是像

ls -1 -r *.jpg 

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

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

如果你还没有得到tac,你可以做到这一切在纯击:

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