我正在编写一个Shell脚本,该脚本一次选择一个文件并对其进行处理。 我希望脚本按修改时间的升序选择文件。
我使用下面的代码来选择具有特定文件名模式的.csv文件。
for file in /filepath/file*.csv
do
#mystuff
done
但是我希望脚本根据其修改时间的升序选择.csv文件。请提出建议。
预先感谢
答案 0 :(得分:1)
如果您确定文件名不包含任何“奇怪”字符,例如换行符,您可以使用ls
的排序功能,并通过while read...
循环读取输出。这也适用于包含空格的文件名。
ls -tr1 /filepath/file*.csv | while read -r file
do
mystuff "$file"
done
请注意,此解决方案应优先于类似的解决方案
for file in $(ls -tr /filepath/file*.csv) ...
因为如果文件名包含空格,由于此处涉及单词拆分,这将失败。
答案 1 :(得分:0)
将循环设为“ for”
for file in "`ls -tr /filepath/file*.csv`"
do
mystuff $file
done
答案 2 :(得分:0)
您可以将ls -t
的结果作为数组返回。 (-t按修改的时间排序)
csvs=($(ls -t /filepath/file*.csv))
然后应用您的for循环。
for file in $csvs
do
#mystuff
done