2010-04-29 30 views
2

我有包含指向其他文件的文件名的文件。這些文件包含指向更多文件的更多文件名等。我需要一個bash腳本,它在每個文件遞歸後跟蹤並在運行過程中記錄到每個接觸到的文件的文件中。bash中的遞歸跟隨文件

file1: 
    file2 
    file3 

file2: 
    file4 

file3: 
    file5 

file4和file5是空的。 結果:

file1 
file2 
file4 
file3 
file5 

回答

1

定義

function scan() { 
    echo $1 
    local f 
    while read f ; do 
    scan $f 
    done < $1 
} 

用途:

scan file1 > log 

更新:接受丹尼斯·威廉姆森評論和更換cat $1 | while ... done與性能更好的while ... done < $1

+1

無用的'cat':'while ... done <$ 1' – 2010-04-29 14:17:03

+0

@ Dennis Williamson,已更新。謝謝。 – 2010-04-29 14:56:24