'sr'を 'SR'に置き換えて、名前に 'sr'というファイル名を変更します。 「perlバッチファイル名をコマンドラインで変更します
Not enough arguments for rename at -e line 1, near "rename ,"`
Execution of -e aborted due to compilation errors.
$ _が空の文字列となっているようですが、私はドン:
ls | perl -e 'while(<>){chomp;if(/(.*)sr(.*)/){rename $_,$1."SR".$2}}'
をしかし、この1つは失敗しました:この1は成功しました
ls | perl -e "while(<>){chomp;if(/sr/){rename $_,$\`.'SR'.($')}}"
をこのエラーメッセージを表示してなぜか分かりません。説明をありがとう。
は今、引用符は興味深い問題となっている、これは私のテストで:
ls | perl -e "while(<>){chomp;if(/sr/){print $_;print\"\n\";print $\`,$&,($');print \"\n\";print $_,$\`,$&,($');print\"\n\";print $_;print\"\n\"}}"
これを出力:
3sr
3sr
3sr
3sr
sr1
sr1
sr1
sr1
sr2
sr2
sr2
sr2
を単独で使用している場合、$ _空ではないようです。 $ `、$ &、$ 'と共に使用すると空になります。各ファイルの最後の行によれば、単独で使用しないときに$ _が一時的に変更されたと思いますか?
また、a1111exeの回答によると、私はこれをテスト:
ls | perl -e "while(<>){chomp;if(/sr/){print \$_,$\`,$&,($');print \"\n\"}}"
をし、この得た:我々は、単一引用符の代わりに二重引用符を使用する必要があり、Linuxで最初に
3sr3sr
sr1sr1
sr2sr2
"Perlコードの周りを使用しているため、$で始まるものはperlよりむしろシェル変数として扱われるでしょうか? –
しかしこれは期待通りに動作します: ' ls | perlファイル名を – jsjie
と出力します。それ以外の場合は、$変数が問題を引き起こすため、引用符の使用を変更しました。 $ \ 'と$ \\は試してみましたが使用しません。 – jsjie