私が書いたスクリプトがあります。完全に実行されます。しかし、実行に4日かかることが予想されます!これを行うより効率的な方法があるかどうか疑問に思います。
スクリプトは次のことを行います。
- イメージサーバーからすべてのファイルをインポートしてロードします。イメージサーバー.txt
- grepのファイルパス形式を指定します。
- 循環するイメージサーバー.txtそして
/var/www/html
行ごとにgrep - 後で使用するための2つのフォーマットされた(既存および存在しない)ファイルの作成
tail
スクリプトの進行状況を追跡するためにログファイルに書き込む
2つのファイルがあります。
イメージサーバー.txt (約250,000ライン)
imageserver/icons/socialmedia/sqcolor_tumblr.png imageserver/icons/socialmedia/sqcolor_gaf.png imageserver/icons/socialmedia/sqcolor_yelp.png imageserver/icons/socialmedia/sqcolor_linkedin.png imageserver/icons/socialmedia/sqcolor_twitter.png imageserver/icons/socialmedia/sqcolor_angies.png imageserver/icons/socialmedia/sqcolor_houzz.png
search.sh
#!/bin/bash echo "\n\n Started ...\n\n" # Clear Runtime Files > doesExist.txt > nonExists.txt > imgSearch.log echo "\n\n Building Image List ...\n\n" #write contents of imageserver to imageserver.txt find /var/www/imageserver/ -type f > imageserver.txt # Remove /var/www find ./imageserver.txt -type f -readable -writable -exec sed -i "s/\/var\/www\///g" {} \; echo "\n\n Finished Building Start Searching ...\n\n" linecount=$(wc -l < ./imageserver.txt) while IFS= read -r var do echo "$linecount\n\n" echo "\n ... Searching $var\n " results=$(grep -rl "$var" /var/www/html) if [ $? -eq 0 ]; then echo "Image exists ...\n" echo "$var|||$results^^^" >> doesExist.txt echo "$linecount | YES | $var " >> imgSearch.log else echo "Image does not exist ... \n" echo $var >> nonExists.txt echo "$linecount | NO | $var " >> imgSearch.log fi linecount=$((linecount-1)) done < ./imageserver.txt echo "\n\n -- FINISHED -- \n\n"
デフォルトでは、イメージが/var/www/html
ディレクトリのHTMLで使用されていることを確認しています。
つまり、各繰り返しにはgrep
約0.5〜1秒かかります。私の計算には3〜4日かかります。例外的なことだと思いますが…これを達成するためのより良い(より効率的な)方法はありますか?
ベストアンサー1
スクリプトのパフォーマンスは問題になりません。
あなたはたどっています各/var/www/htmlで検索してください。250,000移流!
whileループを次のように置き換える必要があります。
grep -rl -F -f ./imageserver.txt /var/www/html > grep_output
その後、出力ファイルを解析して統計を取得します。トリッキーですが、4日はかかりません。
または多分簡単かもしれません
grep -Ff ./imageserver.txt -o grep_output | sort -u
使用された画像のリストを取得します。comm
imageserver.txtと比較して画像を見つけることができます。いいえ使用される。