1
尝试将文件重命名为随机字符串。为了生成随机字符串,我从this question的答案中拿了一些代码。将多个文件重命名为随机字符串仅重命名一个文件
#!/bin/bash
chars=({a..z} {A..Z} {0..9})
function rand_string {
local c=$1 ret=
while((c--)); do
ret+=${chars[$((RANDOM%${#chars[@]}))]}
done
printf '%s\n' "$ret"
}
output=$(rand_string 10)
实践中,我用一些纯文本文件在$HOME/practice
做了一个目录。
/Users/me/practice/testfile1.txt
/Users/me/practice/testfile2.txt
/Users/me/practice/testfile3.txt
当试图重命名这些文件一个随机字符串,而不是得到3个随机的名字,我反而留下了1个文件重命名为一个随机字符串。
for file in $HOME/practice/*
do
mv "$file" $HOME/practice/"$output"
done
#result
/Users/me/practice/i6TP3wiMDD
更换mv "$file" ~/practice/"$output"
与echo "$file" "$output"
让我发现,每一个文件,而不是生成的每一个文件一个新的随机字符串之后被重复的随机字符串。
/Users/me/practice/testfile1.txt i6TP3wiMDD
/Users/me/practice/testfile2.txt i6TP3wiMDD
/Users/me/practice/testfile3.txt i6TP3wiMDD
我的问题是两个部分:
- 为什么只有1个文件被重命名?
- 如何为每个正在重命名的文件生成一个新的随机字符串?
我还会说上面的随机字符脚本超出了我目前的理解。我知道它适用于生成随机字符。但它的内部运作仍然不太清楚。