0

数百のフォルダーの名前を変更して、フォルダー名の前に付いている数字を削除しようとしています。私はそこにほとんど到達したようですが、私のスクリプトはまだうまく機能していません. これらechoのコマンドを実行する代わりに、スクリプトによって作成されたコマンドを実行すると、すべてが正常に見えます。スクリプト:

for file in *
do
    echo mv "'"$file"'" $(echo "'"$file"'" | sed 's/[0-9]\{1,3\} //')
done

次の多くの行を返します。

mv '123 filename' 'filename'
mv '99 another name' 'another name'
. . . etc.

これらの行の 1 つをコマンド ラインで使用すると、フォルダーの名前が適切に変更されます。echoただし、これらのコマンドを実際に実行するために を削除するとmv、機能しません。代わりに、mv何らかの方法でコマンドを誤って入力したときに表示される使用法のリマインダーを出力します。

出力コマンドが個別に機能するのに、for ループ内では機能しないのはなぜですか? このスクリプトを修正するにはどうすればよいですか?

4

1 に答える 1