2011-07-11 6 views
4

私が作っているbashスクリプトの一部には、ファイルを分割した後に分割ファイルを別のディレクトリに移動する作業が含まれています。Bash [']'という名前のファイルを見つけて移動する

"test file.txt"のようなファイルがある場合は、最初に "[test] file.txt.part1.rar"、 "test file.txt.part2.rar"にrarredしてから両方のrarファイルは別のディレクトリに移動します。

私はうまく動作しているrarビットがありますが、私は&移動を見つけることに問題があります。ここで

は私のスクリプトです:

#!/bin/bash 

# [...]  

rar a -m0 -v104857600b "$1.rar" "$1"; 

find $folder -name "$1.part*" -exec mv {} $someotherfolder \; 

それが動作していないようですが。私はシェルから1つのライナーを見つけたことをテストしましたが、ファイルに名前の括弧があるので問題を推測しています - "" ["と"] "

あなたはどう思いますか?

+1

の '$ののparam' を使用し、それらをエスケープしてみ? '-name '\ [test \]'' ... – cnicutar

答えて

4

'['と ']'は、文字セットを記述するためにシェルで使用されます。あなたは正しい動作を得るために '\'でそれらをエスケープする必要があります。あなたがエスケープしないと、 't'または 'e'または 's'または 't'を含むファイルを探すことができます:)

これを行うには、$ 1パラメータを使用する必要があります。

param=$(echo $1 | sed '[email protected]\[@\\[@g'| sed '[email protected]\]@\\]@g') 

、代わりに '$ 1'

私の2セント

+0

ありがとう!最後に、このメソッドを使用して作業するようにしました。一重引用符も二重引用符に変更する必要がありました。>< – lelouch

+0

ようこそ!それがなぜ私がbash上のPythonを好む理由の1つです。私はそのようなものにうんざりしています^^ – neuro

+0

あなたはsedコールを以下のような1つのsedコールに組み合わせることができます:sed 's [\ {@ \\ [@ g; s @ \] @ \\] @ g' – gaoithe

関連する問題