Bashスクリプトはファイル名に任意の拡張子を提供します。

Bashスクリプトはファイル名に任意の拡張子を提供します。

ファイルの末尾に英数字拡張子を追加するOSX用のbashスクリプトを作成しようとしています。

ランダムな6文字を生成する方法が見つかりません。前のファイル名_cod_45fg43.zip

スクリプトは次のとおりです。

for fname in *.zip
do
 CODE= ???
 CODESTRING="_cod_$CODE"
 mv "$fname" "${fname%.zip}$CODESTRING.zip"
done

ベストアンサー1

あなたが使用できるmktemp

$ mktemp foobarXXXXXX
foobarAU7TyS
$ mktemp foobarXXXXXX
foobardDqS61
$ mktemp foobarXXXXXX
foobarioCZw2

あなたの例では、次のようになります。

mv "$fname" "$(mktemp "${fname%.zip}"XXXXXX.zip)"

しかし、いくつかのテストをしなければなりません。 "X"で終わるzipファイルでは奇妙なことが起こります...;)

利点は、mktemp可能性に関係なく、ファイル名がすでに存在しないことを保証することです。もちろん、上記の例では、もともとエラーをチェックしないと役に立ちません。

または。mv--backup

(最初にこれを行う理由によって異なります。)

おすすめ記事