2015-07-03 167 views
-1

我想將一些文件粘貼到名爲「output.txt」的唯一文件中。 不過,我想將文件夾的名稱分配給輸出文件的名稱,以便它是:「output_<name of the Folder>.txt」。 我有成千上萬的文件夾,以便「粘貼」命令將運行在我能寫的for循環中。任何人都可以幫助我嗎?將文件夾的名稱指定爲文件的名稱

+1

「粘貼」是什麼意思?有一個Unix命令「粘貼」,將每個輸入文件的第1行放在輸出的第1行,然後將每個文件的第2行放到輸出的第2行等等。或者,你是否僅僅意味着連接(有一個命令'貓「,當然)。你將作爲參數提供給shell腳本什麼?目錄的名稱?目錄中是否有子目錄?你有數千個目錄;目錄中有多少個文件?你想擺脫原始文件?目錄中是否有文件'output_ .txt'? –

回答

1

這個問題令人難以置信的不清楚。我將把它解釋爲意味着你有大量的目錄都包含一個名爲'output.txt'的文件,並且你想要將這些文件移動到一個單獨的目錄中,同時將原始路徑嵌入到名稱中。假設包含所有文件的目錄樹的根是/path/to/source,你想將它們移動到/path/to/destination

find /path/to/source -name output.txt -exec sh -c 'd=$(dirname "$1" | 
    tr/_); cp "$1" "/path/to/destination/output_$d.txt"' sh {} \; 

相對路徑將正常工作,以及絕對路徑。

+0

正是我在找的!非常感謝你! – Elb

0

我也不清楚你想要什麼,但mktemp(1)有模板可能有幫助。