如何在bash脚本中反转for循环

时间:2017-12-06 13:49:29

标签: linux bash loops for-loop

我需要在bash脚本中反转for循环。有一个目录,其中包含以%Y%m.mp4(201701.mp4; 201702.mp4,201703.mp4,...)命名的视频。循环应该以最早的文件名开头(例如201712.mp4)如何反转我的for循环?

<ng-container *ngIf="showButtonWithDisabledExpr">
        <button [disabled]="someExpression">Clippy</button>
</ng-container>

<ng-container *ngIf="!showButtonWithDisabledExpr">
        <button>Clippy</button>
</ng-container>

1 个答案:

答案 0 :(得分:4)

您可以通过以下方式按预订顺序列出文件:

ls -1 $outputdir/*.mp4 | sort -r

所以在你的脚本中你可以这样做:

outputdir="/path/to/video/monthly/"
for file in $(ls -1 $outputdir*.mp4 | sort -r)
do
   echo $file
done

注意:正如@Pesa所指出的,此解决方案无法使用带空格的文件名。如果是这种情况,您应该引用命令:"$(ls -1 $outputdir*.mp4 | sort -r)"并使用"$file"

<强>更新: 请参阅以下测试

mkdir test && cd $_
for i in {1..5}; do touch test_$i.txt; done
cd -

ls -1 test/*.txt将输出:

test/test_1.txt
test/test_2.txt
test/test_3.txt
test/test_4.txt
test/test_5.txt

ls -1 test/*txt | sort -r将输出:

test/test_5.txt
test/test_4.txt
test/test_3.txt
test/test_2.txt
test/test_1.txt