Bash
Bash腳本為文件名提供隨機副檔名
我正在嘗試為 OSX 製作一個 bash 腳本,在文件末尾添加一個字母數字副檔名。
我找不到如何製作隨機 6 個字元。前文件名_cod_45fg43.zip
這裡的腳本:
for fname in *.zip do CODE= ??? CODESTRING="_cod_$CODE" mv "$fname" "${fname%.zip}$CODESTRING.zip" done
這將起作用:
for fname in *.zip do CODE="$(tr -dc '[:alnum:]' </dev/urandom | head -c 6)" CODESTRING="_cod_${CODE}" YOUR mv CODE done
你可以使用
mktemp
:$ mktemp foobarXXXXXX foobarAU7TyS $ mktemp foobarXXXXXX foobardDqS61 $ mktemp foobarXXXXXX foobarioCZw2
在您的範例中,可能類似於:
mv "$fname" "$(mktemp "${fname%.zip}"XXXXXX.zip)"
但是你應該做一些測試。以 ‘X’ 結尾的 zipfile 會發生奇怪的事情… ;)(需要一個非 X 後綴/分隔符,我在本例中方便地省略了它)。
好處
mktemp
是,無論機會多麼不可能,它都可以確保文件名不存在。當然,在上面的範例中,首先不檢查錯誤是沒有用的……或者你利用
mv
’s 的內置--backup
機制。(首先取決於您為什麼要這樣做。)