長いファイル名、記号、スペースなどを含むファイルが非常にたくさんあります。からランダムなファイル名を付けながら、ランダムかつ盲目的にすべてのファイルの名前を一度に変更したいと思います1-9a-Z
。記号、スペース、長さなどが原因でエラーが発生することがあるため、各ファイル名を操作したくありません。
どんな種類の助けも大歓迎です。前もって感謝します。
おそらく、Oliが提案したような単純なbashスクリプト:
#!/bin/bash
counter=1
for i in *; do
mv "$i" "$counter";
((counter++))
done
HTH
一時ファイル名を持つ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
注:ファイル名にスペースまたはタブがある場合、これは機能しません。