最初の10文字を変更せずにファイル名を変更します。

最初の10文字を変更せずにファイル名を変更します。

たとえば、ファイル名は次のようになります。

Order21039 Internal Document.doc
Order33920 New Order.doc
Order39307 Exam.doc
.
.
.

最初の10文字を保持し、次のような他のテキストを追加したいと思います。

Order21039.test.doc
Order33920.test.doc
.
.
.

FreeBSDのための最良かつ簡単な方法は何ですか?

ベストアンサー1

そしてzsh

autoload zmv # best in ~/.zshrc
zmv -n '(?(#c10))*.doc' '$1.test.doc'

(幸せなら削除-n)。

次のように変更できます。

zmv -n '(Order<->)*.doc' '$1.test.doc'

一致するOrder<anydecimalnumber>文字は10文字ではありません。

名前を変更した後perl

PERL_UNICODE=LADS rename -n 's|^\./.{10}\K.*\.doc\z|.test.doc\z|s' ./*.doc

(これとは異なり、zmv複数のファイルが同じファイルにマップされるのを防ぎません。)

これがなければ、FreeBSDなどのPOSIXに似たシェルを使用できます/bin/sh

for file in ??????????*.doc; do
  newfile=${file%"${file#??????????}"}.test.doc
  echo mv -i -- "$file" "$newfile"
done

(幸せなら削除echo)。

Bourneに似たシェルの場合:

for file in ??????????*.doc; do
  newfile=`expr " $file" : ' \(.\{10\}\)'`.test.doc
  echo mv -i -- "$file" "$newfile"
done

おすすめ記事