2

長いファイル名、記号、スペースなどを含むファイルが非常にたくさんあります。からランダムなファイル名を付けながら、ランダムかつ盲目的にすべてのファイルの名前を一度に変更したいと思います1-9a-Z。記号、スペース、長さなどが原因でエラーが発生することがあるため、各ファイル名を操作したくありません。

どんな種類の助けも大歓迎です。前もって感謝します。

4

4 に答える 4

4

おそらく、Oliが提案したような単純なbashスクリプト:

#!/bin/bash
counter=1
for i in *; do
   mv "$i" "$counter";
   ((counter++))
done

HTH

于 2012-07-21T12:09:13.523 に答える
2

一時ファイル名を持つOneliner(独自のディレクトリを変更):

for f in *; do mv "$f" `mktemp -p /home/user/temp`; done
于 2012-07-21T12:16:56.030 に答える
1
  1. 一時ディレクトリを作成します
  2. ファイルごとmv filename tmp/$iに、、$iは増分番号です。
  3. mv tmp/* .
于 2012-07-21T11:48:54.913 に答える
1

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

注:ファイル名にスペースまたはタブがある場合、これは機能しません。

于 2012-07-21T12:12:08.537 に答える