2
for f in $(for i in $(find Balzac/ -iname "20??????.txt"); do echo $i; done); do cat $f|cut -c 10-21; done|sort|uniq|egrep -Re "[0-9][0-9][0-9]-[0-9][0-9][0-9].mp3"
從我們使用的基於.txt的播放列表中產生所有mp3的已排序的,未排序的列表。bash:嵌套替換僅將最後一個值分配給變量
a=$(for f in $(for i in $(find Balzac/ -iname "20??????.txt"); do echo $i; done); do cat $f|cut -c 10-21; done|sort|uniq|egrep -Re "[0-9][0-9][0-9]-[0-9][0-9][0-9].mp3")
雖然只包含該列表的最後一個值。
任何想法爲什麼和我能做些什麼來使整個列表在我的變量?我迷失在此......
最後,我需要兩個變種以上比較/差異輸出彼此,看看這兩個目錄中包含的文件有什麼不同。
非常,非常非常好!一個答案不僅僅是幫助我,而是改善我的bash!謝謝! – Christian 2011-05-18 11:19:39
Weeellll,實際上您的短版本只輸出最後一個條目,與我的示例相同。如果我在while循環中'echo',那麼長版本會很好地輸出所有內容,但是我不能將所有內容都分配給一個變量,因爲該變量不會在while循環中「生存」。最後,我需要上述兩種變體「comp」將輸出相互對比。 – Christian 2011-05-18 12:56:09
您確定切割,排序,uniq和egrep的組合實際上首先返回多個項目嗎?當您在變量賦值之外手動運行該行時會發生什麼? – Caleb 2011-05-18 13:00:07