Bash

Bash腳本為文件名提供隨機副檔名

  • June 21, 2019

我正在嘗試為 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機制。

(首先取決於您為什麼要這樣做。)

引用自:https://unix.stackexchange.com/questions/348079