2013-09-23 18 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' - ' $() 'の内部の引用符は、これは実際に与えられたように機能します)。 –