設計bash腳本我必須做一個簡單的設計,但我不知道該怎麼辦呢用於提取未知的文件名部分
我有兩個文件夾folderA和文件夾B. folderA的裏面我有一個名爲兩個文件「file_」和「file_anything」。第二個文件的「任何」部分是我不知道的一些文本(或者對於各種文件夾可能不同)。我需要做的是將folderB的名稱更改爲任何文字爲「任何東西」,而無需特別瞭解
如果超出了程序,我會感到欣慰的是有人給我一個鏈接,指向您用來理解和能夠修改或適應其他情況的solutuions。我想學習
感謝
編輯: 我需要這個解決方案將包括在要被重複了很多具有相同estructure文件夾的夫婦bash腳本(無Perl函數)內。例如:
FolderA(與文件 「_文件」 和 「file_manana」)和FolderB中---變化---> FolderA和晨報(原FolderB中)
FolderC(與文件 「_文件」 和「 File_monkey「)和FolderD ---更改爲---> FolderA和Monkey(前FolderD)
FolderE(帶有文件」file_「和」file_moose「)和FolderF ---更改爲---> FolderA和駝鹿(原FolderF)
很多很多次多了很多文件夾
埃德它2:
好吧,我越來越近。現在的問題是這樣的:我這樣定義fn:fn = file_a *知道該文件夾中只有一個與該指令相匹配的文件。我確認這樣做echo $ fn。現在我這樣做:fn = $ {fn ## * _}。但是,fn不會變成「任何東西」,而是變成「a *」。我該如何解決這個問題? @David Zaslavsky
編輯3:Thx @chepner。 BASH_REMATCH是要走的路。我用它一點點的改變,因爲你寫的方式didin't爲我工作
for f in FolderA/file_*; do # I assume a single match
[[ $f =~ "file_"(.*) ]]
suffix=${BASH_REMATCH[1]}
mv FolderB "$suffix"
done
注意引號。他們之間,我甚至可以包含空格
THX大家
我不確定要理解你的問題,但我認爲'rename' cmd可以幫助你。你只給出一個'ed'命令來重命名文件。例如:'s/file _ //'刪除這部分。 – Zulu 2013-03-05 22:30:18