名前を変更するために男を読んだり、他の人がさまざまなメッセージボードで与えたサンプルスクリプトのトンを読んだ後でも、名前変更コマンドの構文が実際に何を意味するのか理解することさえできません。
私はbashコマンドを学ぼうとしていますが、実際に何を、そしてより重要なことには「何をするのか」を実際に理解せずに、単にインターネットからコマンドをコピーして実行するのがいかに危険かを認識しています。だから、名前変更コマンドの用語が何を意味するのかを誰かが理解するのを手伝ってくれるので、私は自分の動作する正確なコマンドを構築できますか?
具体的には、40以上のyoutubeビデオを同じディレクトリにダウンロードしましたが、それらはすべて-fgrhegrvbfv
で終わります(それぞれの後には、完全にランダムな文字があります)。すべてのファイル名で-とその後の12文字を削除したいだけです。どうもありがとう!
最初のパラメーターは、古い名前($_
)を新しい名前に変換するPerlスニペットであり、残りのパラメーターは操作対象のファイルです。あなたの場合、あなたはこれをするでしょう:
rename 's/-.{12}$//' *
これを行う1つの方法を次に示します。
$ ls
file2-fdsa file-asdf
$ prename -nv 's/(.*)-(.*)/$1/' *-*
file-asdf renamed as file
file2-fdsa renamed as file2
これが機能する方法は、一致した文字の2つの「グループ」があることです。したがって、最初の(.*)
は-
の前になり、2番目の(.*)
は-
の後になります。グループ1では$1
、グループ2では$2
を使用してそれらを参照できます(使用されません)。
*-*
は、-
を含むすべてのファイルをシェルに渡し、rename
コマンドに引数として渡すように指示します。その部分はrename
自体とは関係ありませんが、シェルとは関係ありません。私たちの生活が少し楽になります。
これで、コマンド全体を読むことができます:「-
を含むすべてのファイルを取得し、各ファイル名について2つのグループに分け、最初のグループにあるファイルのみを名前変更します」。
いくつかのことに注意してください:
-n
フラグは、ドライランのみを行うために使用されます。実際にアクションを実行する場合は、そのフラグを削除します。-v
フラグは、prename
が実際に実行していることの詳細な出力を取得するために使用されますprename
はrename
と同じです。 debianパッケージと維持されているものには少し混乱があります。詳細については、 this を参照してください。 ksh
などの一部のシェルには、Perlの名前変更とは異なる独自の組み込みrename
コマンドがあります。