mbe*_*ann 1 linux bash loops for-loop
我需要反转 bash 脚本中的 for 循环。有一个目录,其中包含以 %Y%m.mp4 命名的视频(201701.mp4;201702.mp4、201703.mp4,...)。循环应从最旧的文件名开始(例如 201712.mp4) 如何反转我的 for 循环?
outputdir="/path/to/video/monthly/"
for file in "$outputdir"*.mp4
do
echo $file
done
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式按保留顺序列出文件:
ls -1 $outputdir/*.mp4 | sort -r
Run Code Online (Sandbox Code Playgroud)
所以在你的脚本中你可以这样做:
outputdir="/path/to/video/monthly/"
for file in $(ls -1 $outputdir*.mp4 | sort -r)
do
echo $file
done
Run Code Online (Sandbox Code Playgroud)
注意:正如 @PesaThe 指出的那样,此解决方案无法处理带有空格的文件名。如果是你的情况,你应该引用命令:"$(ls -1 $outputdir*.mp4 | sort -r)"
并使用"$file"
更新:请参阅以下测试
mkdir test && cd $_
for i in {1..5}; do touch test_$i.txt; done
cd -
Run Code Online (Sandbox Code Playgroud)
并ls -1 test/*.txt
会输出:
test/test_1.txt
test/test_2.txt
test/test_3.txt
test/test_4.txt
test/test_5.txt
Run Code Online (Sandbox Code Playgroud)
并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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4997 次 |
最近记录: |