0

ディレクトリ内のすべてのファイルを繰り返し処理し、ファイルのパス部分を次のコードで検索/置換しようとしています...

for f in /the/path/to/the/files/*
do
    file = $(echo $f | sec 's/\/the\/path\/to\/the\/files\///g`);
done  

ただし、コードの割り当て部分で次のエラーが発生します...

cannot open `=' (No such file or directory)

私は何が間違っているのですか?

4

3 に答える 3

3

=前後にスペースを入れずに書く必要があります:

for f in /the/path/to/the/files/*
do
 file=$(echo $f | sec 's/\/the\/path\/to\/the\/files\///g');
done  

また、sed 区切り文字として / ではなく別の記号を使用することをお勧めします。

for f in /the/path/to/the/files/*
do
 file=$(echo $f | sec 's@/the/path/to/the/files/@@g')
done  
于 2013-03-21T17:57:43.583 に答える
1

等号の両側にスペースを入れることはできません。

for f in /the/path/to/the/files/*
do
    file=$(echo $f | sed 's/\/the\/path\/to\/the\/files\///g`);
done  

ただし、これを実現するには、パラメーター展開の方が優れています。

for f in /the/path/to/the/files/*
do
    file=${f#/the/path/to/the/files/}
done  
于 2013-03-21T17:58:20.553 に答える
0

試す:

for f in /the/path/to/the/files/*; do
    # no spaces around = sign
    file=$(echo $f | sed "s'/the/path/to/the/files/''g");
done
于 2013-03-21T19:07:59.293 に答える