SDカードがカードリーダーに挿入されると、SDカードを自動マウントするBASHスクリプトを記述して、すべての写真をHDDのフォルダーに移動し、各ファイルの名前を写真の撮影日時に変更しようとしています。
それを達成する方法はありますか?GUIなしでUbuntu 12.04を使用しています
udev
これを行う簡単で簡単な方法です。古いガイドの中には、スクリプトを実行する古い方法を参照しているものがあることに注意してください。新しい方法はRUN+="/path/to/script"
SDカードがカードリーダーに挿入されると、SDカードを自動マウントするBASHスクリプトを記述して、すべての写真をHDDのフォルダーに移動し、各ファイルの名前を写真の撮影日時に変更しようとしています。
それを達成する方法はありますか?GUIなしでUbuntu 12.04を使用しています
udev
これを行う簡単で簡単な方法です。古いガイドの中には、スクリプトを実行する古い方法を参照しているものがあることに注意してください。新しい方法はRUN+="/path/to/script"
回答:
あなたに完全な答えを提供するだけです:
高度な方法(実行方法)
デバイスのUUIDに固有のUDEVルールを使用する必要があります(上記のタイプのudidはご容赦ください)。
レイジーウェイ(どのようにできるか)
実行CRONジョブを指定した間隔でスクリプトを実行します。残りのスクリプトを実行する前に、SDがプラグインされているか、マウントされていることを確認するためのスクリプトが明らかに必要です。
EXIFデータを取得するには
$ identify -verbose imageFile.jpg
それはたくさんのグッズを吐き出しますので、そこから作成日が欲しいとしましょう-それを絞り込みましょう:
$ identify -verbose imageFile.jpg | awk '/exif:/'
(またはgrep exif)
OPはコメントで別のメソッドを要求しました:
代わりにフォルダをネストするように求めています。たとえば、2012年11月20日は〜/ 2012/11/20 / *。jpgになります
これを試すために作成したスクリプトは次のとおりです。EXIFで動作します(最初の項目は作成日に基づいており、ファイルを移動またはコピーすると浮かび上がります)。それはあなたのために私の空白のサイトでホストされており、スクリーンショットも投稿します(ここでフォーマットするのに多大な労力があるため)。 imageByEXIF.sh
これを実装する前に、限られた規模でテストすることをお勧めします。テスト用にコマンドライン引数を入れたので、〜/ Pictures to〜/ Documentsを実行していました(ただし、フルパスを優先します)。
identify -verbose "INPUT" | grep "exif:DateTime:" | awk -F\ '{print $2" "$3}'
identify -verbose inputFile.jpg | grep "date:create:" | awk '{print $2}' | awk -FT '{print "date: "$1" time: "$2}'
です。ヘルプが必要な場合は、スクリプトに統合するためにあなたに任せます。(他のデータが必要な場合は、そのままにしておきidentify -verbose image.jpg
ます。クールなものがあります
identify -verbose imageFile.jpg | awk '/date:create:/ {split($2,arr,"T"); print arr[1],arr[2]}'
それは非常にきれいである、[1]、日付と編曲であるARR [2]の時間です
ここにubuntuの強力なマウントトリガーへの答えがあります:https : //help.ubuntu.com/community/UsbDriveDoSomethingHowto
スクリプトを入力するだけで写真を移動できます。のような:
#!/ bin / bash # #../20121115-174656-originalnameのような宛先ファイル source = / mnt / sdcard / destination = / home / youraccount / foto / cd $ source forの `find。-maxdepth 1 -type f -printf "%f \ n" `; 行う iinfo = `stat -c%y $ i | カット-c1-19` idate = `date --date =" $ iinfo "+%Y%m%d-%H%M%S-` echo mv $ i $ destination $ idate $ i やった