1

以下の形式のファイルがあります

EnvName.Fullbkp.schema_10022012_0630_Part1.expd
EnvName.Fullbkp.schema_10022012_0630_Part2.expd
EnvName.Fullbkp.schema_10022012_0630_Part3.expd
EnvName.Fullbkp.schema_10022012_0630_Part4.expd

以下のファイルでこれの名前を変更したい

EnvName.Fullbkp.schema_22052013_1000_Part1.expd
EnvName.Fullbkp.schema_22052013_1000_Part2.expd
EnvName.Fullbkp.schema_22052013_1000_Part3.expd
EnvName.Fullbkp.schema_22052013_1000_Part4.expd

つまり、10022012_0630 の名前を 22052013_1000 に変更したいということです。これは、すべてのファイルの名前を一度に変更するために使用されるコマンドとループです

4

3 に答える 3

1

これは機能します:

rename 's/10022012_0630/22052013_1000/' EnvName.Fullbkp.schema_10022012_0630_Part*

パターンを持つファイルを指定するとEnvName.Fullbkp.schema_10022012_0630_Part*、 で変化10022012_063022052013_1000ます。

于 2013-05-22T12:25:04.680 に答える
1
for OLDNAME in EnvName.Fullbkp.schema_10022012_0630_Part*.expd; do
  NEWNAME=`echo "$OLDNAME" | sed 's/10022012_0630/22052013_1000/'`
  mv "$OLDNAME" "$NEWNAME"
done
于 2013-05-22T12:25:17.927 に答える
1

特に何千ものファイルを扱っている場合、非常に効率的な方法は、文字列の置換に bash を使用し、ルックアップに find を使用することです。これにより、多くの無駄な forks/execve が回避され、プロセス数が最小限に抑えられます。

for F in $(find /your/path/ -type f -name '*10022012_0630*'); do
  mv $F ${F/10022012_0630/22052013_1000};
done
于 2013-05-22T12:31:25.307 に答える