2

スクリプトの一部は次のようになります。

while read line  
do 
code=`echo ${line}  | awk  '{print $1}'`
awk -f ${supscript}/rearrange.sh < ${base}/${code}  
mv temp_output* "$code"temp_output* 
done < filelist

スクリプトは機能しています。唯一の問題は、ファイルの名前を変更しようとすると、次のエラーメッセージが表示されることです。

mv: target `pollcodetemp_output*' is not a directory

多分それはIFSに関連したものです。スクリプトの最初でこれを次のように指定しようとしています。

IFS='
'

しかし、それは機能していません。Windowsテキストエディタを使用していますが、すでにCRを削除しています。

4

2 に答える 2

4

ほとんどの場合、必要なのは次のとおりです。

mv temp_output* "$code"

temp_output*これにより、現在のディレクトリで指定されたファイルが変数で指定されたディレクトリに移動します$code

ただし、$codeがファイルの場合は、コマンドを探す必要がありますrename(構文が異なるいくつかのバージョンがあります)。または、内部ループを使用する必要があります。

for file in temp_output*
do mv "$file" "$code$file"
done
于 2012-06-22T08:14:28.920 に答える
2

ディレクトリではない名前に複数のファイルを移動しようとしていますが、これは不可能です。これは、ワイルドカードパターンからワイルドカードパターンに名前を変更しようとしているように見えるために発生しますが、これも不可能です。私はあなたが何を達成しようとしているのか正確には推測できないので、追加のアドバイスをすることはできません。

于 2012-06-22T08:14:00.940 に答える