2017-12-03 23 views
1

「flashmem」(/ root/flashmem)という名前の写真がいっぱいのファイルがあります。表示できるようにすべての写真をIMG_0000.JPGの形式で移動しようとしています正規表現から 'photoarch'(/ root/photoarch)($ 1)という名前の別のディレクトリにコピーすると、すべての複製がtxtファイル($ 2)に移動されます。 以下に私のコードを添付しました。コマンドラインに入力したものと私のエラーと私のルートディレクトリの外観を示しています。どのような助けをいただければ幸いです、私はこの年齢のために働くようにしているので、この質問に否定的なフィードバックをしないでください!ありがとう。特定のファイルタイプを新しいディレクトリにコピーしようとしたときにエラーが発生しました

コマンドラインエラー:https://imgur.com/a/N0iAB 私のルートディレクトリ:https://imgur.com/a/ej2CR

#!/bin/sh 
if ["$#" -ne2 ]; then 
    echo "Illegal number of parameters" 
fi 
find "$1" -regextype posix-extended -regex 'IMG_[0-9]{4}\.[JPG]{3}$' -exec cp --backup=numbered -t "$2" \; 
find "$2" -type f-exec md5sum '{}' ';' |sort| uniq--all-repeated=separate-w 32 > /root/duplicate.txt 

答えて

2

スクリプトの構文エラーのカップルを持っています。

  • には2つのパラメータ
  • findコマンドで-exec cp ...パラメータプレースホルダ{}
  • が欠けていない場合には、第2 findパイプラインを有する非ゼロとすべきおそらくexit代わり["$#" -ne2 ]
  • [ $# -ne 2 ]あるべき多くのオプションがスペースを分けることなく一緒に詰まっています
  • 正規表現IMG_[0-9]{4}\.[JPG]{3}$彼は最初にfindが奇妙に見えます。 [JPG]{3}の代わりにJPGで終わらないのはなぜですか?一緒に上記を置く

、これはより良い動作するはず:

#!/bin/sh 

if [ $# -ne 2 ]; then 
    echo "Illegal number of parameters" 
    exit 1 
fi 

find "$1" -regextype posix-extended -regex 'IMG_[0-9]{4}\.JPG$' -exec cp --backup=numbered -t {} "$2" \; 
find "$2" -type f -exec md5sum '{}' ';' | sort | uniq --all-repeated=separate -w 32 > /root/duplicate.txt 
+0

おかげヤーノシュ、複数の構文エラーが謝罪、非常に疲れました!ハーフアップしてみてください。 –

+0

ヤノス、このコードは何のエラーもなく実行されていますが、写真を(/ root/photoarch)($ 1)に移動しているようではありません。ありがとう、ジョー。 –

+0

@JoeBloggs '$ 1" -regextype posix-extended -regex 'IMG_ [0-9] {4} \。JPG $' |を実行します。実際にどのファイルにもマッチするかどうかを確認するために 'head'を使います。空の出力が得られた場合は、その 'find'コマンドでさらに作業する必要があります。 – janos

関連する問題