2

シナリオ:

Locky ウィルスが猛威を振るう中、私が勤務するコンピュータ センターでは、Recuva などのツールを使用してファイルを回復する唯一の方法を発見しました。Recuva の問題は、回復したすべてのファイルを 1 つのディレクトリにダンプすることです。ファイル拡張子に基づいて、これらすべてのファイルをカテゴリに移動したいと思います。すべての JPG を 1 つに、すべて BMP を別のものに ... など。Stackoverflow を調べて、他のさまざまな質問と回答に基づいて、小さな bash スクリプト (サンプル提供) を作成しました。拡張機能がめちゃくちゃだと思います。

コード:

#!/bin/bash
path=$2   # Starting path to the directory of the junk files
var=0     # How many records were processed
SECONDS=0 # reset the clock so we can time the event

clear

echo "Searching $2 for file types and then moving all files into grouped folders."

# Only want to move Files from first level as Directories are ok were they are
for FILE in `find $2 -maxdepth 1 -type f`
do
  # Split the EXT off for the directory name using AWK
  DIR=$(awk -F. '{print $NF}' <<<"$FILE")
  # DEBUG ONLY
  # echo "Moving file: $FILE into directory $DIR"
  # Make a directory in our path then Move that file into the directory
  mkdir -p "$DIR"
  mv "$FILE" "$DIR"
  ((var++))
done

echo "$var Files found and orginized in:"
echo "$(($diff / 3600)) hours, $((($diff / 60) % 60)) minutes and $(($diff % 60)) seconds."

質問:

500,000 以上のファイルを処理しながら、これをより効率的にするにはどうすればよいですか? 検索は、ファイルのリストを取得するのに永遠にかかり、ループ内でディレクトリを作成しようとします (そのパスが既に存在する場合でも)。可能であれば、ループのこれら 2 つの特定の側面をより効率的に処理したいと考えています。

4

1 に答える 1