如何使用最近修改过的'排序的文件名中的文件名循环?

时间:2015-11-04 04:09:39

标签: shell unix imagemagick ls

我是Linux的新手,我一直在尝试运行一个脚本,使用ImageMagick convert来处理文件夹中的所有文件(我宁愿执行此任务) Shell比使用mogrify,因为据我所知,它不会保存不同的文件)。这些文件必须在最后一次修改后处理。订单,所以我使用了这段代码:

for file in `ls -1tr {*.jpg,*.png}`; do
    # imagemagick processes with the filename...
done

对于包含空格的文件,此代码会中断,并且根据this answer使用ls这些代码是错误的。

我也从this response尝试了这个解决方案,但显然我完全错了(它提出了一个错误的重定向'错误),我觉得我需要帮助。

while read LINE; do
    ...
done `(ls -1tr {*.png,*.jpg}`

那么如何获得循环的有序文件名列表? (它不一定必须是FOR ... IN循环,它可以是WHILE,或任何东西。)

1 个答案:

答案 0 :(得分:0)

试试这个:

for file in `ls -1tr {*.jpg,*.png} | awk '{print $9}'`; do
    # imagemagick processes with the filename...
done

ls -lrth在输出中给出9个coulmns,其中你只需要第9列(文件名),你可以使用awk获得

如果您有空格分隔的文件名,请修改awk print以在第9列之后打印所有数据