0

、、、、、、、、a.datなどa.txtのファイルa.mp3がいくつかb.datあります。ベース名「a」のすべてのファイルの名前をベース名「x」に変更したいと思います。b.txtb.mp3b.zipb.rarc.mp3

ファイルがx.dat、、、、b.txt b.mp3 b.zipb.rarc.mp3`などx.txtになるようにします。x.mp3b.dat,,,,,

Linuxでは、これはターミナルを介して実行できますが、多くの入力が必要です。スクリプトにタスクを実行してもらいたい。

4

3 に答える 3

5

rename(またはprename一部のシステムでは)コマンドがある場合は、スクリプトは必要ありません。

これにより、任意の複雑なPerl正規表現を使用してファイルのグループの名前を変更できます。

pax> ll qq*
-rwxr-xr-x 1 pax pax 4574 Apr 13 17:03 qq
-rw-r--r-- 1 pax pax  213 Apr 13 17:03 qq.c
-rw-r--r-- 1 pax pax  804 Apr  6 12:23 qq.cpp
-rw-r--r-- 1 pax pax  258 Apr  5 21:33 qq.m
-rw-r--r-- 1 pax pax  904 Apr  6 10:35 qq.o
-rw-r--r-- 1 pax pax  241 Apr  6 10:50 qq.py
-rw-r--r-- 1 pax pax  769 Apr  7 09:47 qq.txt

pax> rename 's/qq/xyzzy/' qq*

pax> ll qq*
ls: cannot access qq*: No such file or directory

pax> ll xyzzy*
-rwxr-xr-x 1 pax pax 4574 Apr 13 17:03 xyzzy
-rw-r--r-- 1 pax pax  213 Apr 13 17:03 xyzzy.c
-rw-r--r-- 1 pax pax  804 Apr  6 12:23 xyzzy.cpp
-rw-r--r-- 1 pax pax  258 Apr  5 21:33 xyzzy.m
-rw-r--r-- 1 pax pax  904 Apr  6 10:35 xyzzy.o
-rw-r--r-- 1 pax pax  241 Apr  6 10:50 xyzzy.py
-rw-r--r-- 1 pax pax  769 Apr  7 09:47 xyzzy.txt
于 2012-04-13T09:28:29.677 に答える
1

mmv仕事をするという小さなプログラムがあります:

$ touch a.dat a.txt a.mp3 b.dat b.txt b.mp3 b.zip b.rar c.mp3
$ mmv "a.*" "x.#1"
$ ls 
b.dat  b.mp3  b.rar  b.txt  b.zip  c.mp3  x.dat  x.mp3  x.txt

mmv通常、Linuxディストリビューションが付属しています。

于 2012-04-13T09:38:26.167 に答える
0

私は方法を提案します、私はこれがうまくいくと思います。これは私が思うに少し奇妙な方法です、笑わないでください。10番目の標準数学。

まず、lsとgrepコマンドの組み合わせを使用して、フォルダー内のすべての名前をgrepします。

  • ls | grep ^ aこれにより、最初の文字がaのすべてのファイルが一覧表示されます。名前にaが付いたファイルのみが必要な場合は、これで正規表現を使用できます。

  • whileループでファイル名を1つずつ読み取る

  • ファイル名を変数(たとえば$ name1)に格納し、sedとawkを使用して、ファイル名の2番目の部分を抽出します(つまり、ドットをスペースに削除して2番目の列を印刷します)これを別の変数(たとえば$ extn)に格納します。

  • どのファイルを指定するために変数($ name1)に格納されている名を使用してファイルの名前を変更し、2番目の変数を使用して新しい名前の拡張子($ extn)を指定できます。

これは非常に長いルートです:)これでうまくいくと確信しています。それを試してみてください。これをアルゴリズムとスクリプトと考えてください。スクリプトを提供して申し訳ありません。少し怠惰です。

于 2012-04-13T10:01:46.407 に答える