たとえば、ファイル名は次のようになります。
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