2014-06-14 29 views
0

對於目錄中的每個文件,我想執行一個python程序。在bash中亂序文件列表

#!/bin/bash 

for file in mp3/* ; do 
     if [[ "$file" == *.wav ]]; then 
       python wav.py --file $file 
     elif [[ "$file" == *mp3 ]]; then 
       python mp3.py --file $file 
     fi 
done 

我該如何修改這個bash腳本,使文件以隨機順序被採取?

一種方法可能是將文件從目錄(遞歸地)加載到列表中,然後先將列表進行混洗。可悲的是,我在bash腳本中沒有太多天賦。

+0

怎麼折騰......我打字的答案,這個問題得到了關閉。 –

回答

0

使用sort -R洗牌的文件列表:

#!/bin/bash 

ls mp3/* |sort -R |while read file; do 

     if [[ "$file" == *.wav ]]; then 
       python wav.py --file $file 
     elif [[ "$file" == *mp3 ]]; then 
       python mp3.py --file $file 
     fi 
done 
+0

你必須在''「$ file」'''周圍使用引號,並且[你總是希望在讀取時使用-r標誌](http://wiki.bash-hackers.org/commands/builtin/read#read_without_- r)和[解析ls不好](http://mywiki.wooledge.org/ParsingLs) –