我有相当多的文件具有长文件名、符号、空格等。我想随机和盲目地一次重命名所有文件,同时给它们一个随机文件名1-9a-Z
。我不想操纵每个文件名,因为有时它会由于符号、空格、长度等而抛出错误。
非常感谢任何形式的帮助。先感谢您。
也许是一个简单的 bash 脚本,就像 Oli 建议的那样:
#!/bin/bash
counter=1
for i in *; do
mv "$i" "$counter";
((counter++))
done
高温高压
带有临时文件名的 Oneliner(更改您自己的目录):
for f in *; do mv "$f" `mktemp -p /home/user/temp`; done
mv filename tmp/$i
,其中$i
是一个递增的数字。mv tmp/* .
.您可以使用 inodenumber 作为文件名。保证在文件系统中是唯一的。
#!/bin/sh
# inodenumber+name
find . -name \*tmp -type f -ls | awk '{print $1," ",$11}' | (
while read i p; do
# UPDATE: extract the basename and suffix
b=`basename $p`
s="${b##*\.}"
echo "b=$b"
echo "s=$s"
# remove the echo after testing ...
echo mv -i $p $i.$s
done
)
#eof
注意:如果文件名中有空格或制表符,这将不起作用。