我有2個文件需要運行各種命令。這兩個文件具有完全相同的名稱,但位於不同的文件夾中。麻煩在於文件夾名稱中。我可以指望這些文件夾相關的事情:在類似(但不同)命名目錄中處理文件
1)通往文件夾的路徑將始終是相同的。
2)第一個文件夾將始終在名稱中包含一個連字符。
a。第一個連字符在所有服務器上都是相同的。
b。第一個連字符在不同服務器之間會有所不同,但在同一臺服務器上(例如服務器名稱,但並非總是專門指定服務器名稱)相同。
3)第二個文件夾將始終包含與第一個文件夾相同的名稱,但第二個連字符以及另一個隨機字符集。
這裏有一個更直觀的故障:
Server01
/same/fld/path/dir1/
|
+--same-nameX/
| |
| +--sameFileName
|
+--same-nameX-abc123/
|
+--sameFileName
Server02
/same/fld/path/dir1/
|
+--same-nameY/
| |
| +--sameFileName
|
+--same-nameY-a1b2c3/
|
+--sameFileName
我在bash腳本,我試圖寫一個劇本的作品我運行它的服務器無關。
所以我的問題是,我怎樣才能制定一個bash命令(爲了簡單起見,「貓」),以便它權威地在一個文件上對另一個文件進行操作?
對於exampe,這樣的:
cat /same/fld/path/dir1/same-*-*/sameFileName
這肯定會給我 「同nameX-ABC123/sameFileName」 的內容
然而,這樣的:
cat /same/fld/path/dir1/same-*/sameFileName
這億韓元不起作用,因爲它會影響這兩個文件,並且我想專門處理文件「.../same-nameX/sameFileName」。
任何幫助,將不勝感激。
要增加額外的清晰度,此問題與具有單個字符差異的文件夾名稱無關。它與顯着不同的文件夾有關,但區別在於「連字符」之間。這裏有一些例子:
Server03
/same/fld/path/dir1/same-zxy12/sameFileName
/same/fld/path/dir1/same-zxy12-xYz/sameFileName
Server04
/same/fld/path/dir1/same-g1f2e3d4/sameFileName
/same/fld/path/dir1/same-g1f2e3d4-ab12c345/sameFileName
Server05
/same/fld/path/dir1/same-nmo/sameFileName
/same/fld/path/dir1/same-nmo-ab/sameFileName
再次,謝謝你,大家,任何人,你的知識。
測試與 「!貓/相同/ FLD /路/ DIR1 /同 - (\ * - \ *)/ sameFileName」< - 到目前爲止,這對我來說很有用,而OMG謝謝你!不過好奇心,有沒有一種方法不使用「extglob」?我需要這個腳本,但是我希望能夠在命令行中使用,或者通過電子郵件發送給其他人。我已經測試過「cat/same/fld/path/dir1/same - [[:alnum:]]/sameFileName」,但那也行不通。 – RussNS
沒有extglob,可能有一種解決方法,但是您始終可以在交互式shell中以相同的方式啓用它,所以這將是我的建議。 –