2013-09-23 79 views
5

我試圖刪除目錄中的文件,使用rm並且不刪除腳本中的目錄本身。我看到的例子只是在目錄本身中做到這一點,並且我想在沒有瀏覽的情況下做到這一點。Bash通配符使用

我試圖

rm "$(dirname $1)/filetokeep/*" 

,但它無法正常工作。任何幫助?

+0

爲什麼'dirname $ 1'? – user567879

+0

.sln文件被傳入,其目錄名稱相同 – user2805565

回答

6

引用通配符會抑制擴展。

rm -- "$(dirname -- "$1")/filetokeep"/* 

使用--確保值不能被解釋爲可選參數,而不是那些位置(這樣的事情還是工作,如果目錄$1開始與-命名)。

+0

謝謝,我是bash的新手。我正在嘗試一堆東西,看起來像我過度使用引號。刪除我原來的嘗試報價也適用。 – user2805565

+0

@ user2805565徹底刪除引號會導致錯誤;你只是想把他們從最後一個角色。 –

+1

...實際上,它應該是'rm'$(dirname「$ 1」)/ filetokeep「/ *'是完全正確的(內部引號圍繞'$ 1' - '$()'創建一個新的引用上下文,所以這確實按照給定的方式工作)。 –