解析输出ls
以遍历文件列表是不好的.那么我应该如何按照它们首次创建的顺序迭代文件列表?我在这里浏览了几个问题,他们似乎都解析了ls
.
嵌入式链接表明:
如果你想要一些只能
ls
做的特定排序,例如排序,事情变得更加困难mtime
.如果您想要目录中最旧或最新的文件,请不要使用ls -t | head -1
- 请参阅Bash FAQ 99.如果您确实需要mtime按顺序列出目录中的所有文件,以便按顺序处理它们,请切换到perl,并让perl程序执行自己的目录打开和排序.然后在perl程序中进行处理,或者 - 最坏的情况 - 让perl程序用NUL分隔符吐出文件名.更好的是,将修改时间放在YYYYMMDD格式的文件名中,这样glob顺序也是mtime顺序.然后你不需要ls或perl或任何东西.(人们想要目录中最旧或最新文件的绝大多数情况都可以通过这样做来解决.)
这是否意味着没有本地方式可以做到这一点bash
?我没有权限修改文件名以包含时间.我需要安排一个cron
每5分钟运行一次的脚本,生成一个数组,其中包含按创建时间排序的特定目录中的所有文件,并对文件名执行一些操作并将它们移动到另一个位置.
以下工作但只是因为我没有有趣的文件名.这些文件是由服务器创建的,因此它永远不会有特殊字符,空格,换行符等.
files=( $(ls -1tr) )
我可以编写一个perl
可以满足我需要的脚本,但如果有人可以提出正确的方法,我会很感激bash
.便携式选项会很棒,但使用最新GNU实用程序的解决方案也不会成为问题.