flickr.comから複数の画像をダウンロードし、画像ファイルと一緒にタグ情報を別のテキストファイルに保存する方法を見つけました。
たとえば、
$ ls
2675.jpg
2675.txt
$ cat 2675.txt
_tags_mountains_daylight_oregon
ファイル名の末尾にタグ情報をコピーしたい。
今後:
2675.jpg
後ろに:
2675_tags_mountains_daylight_oregon.jpg
これを行う方法はありますか? Bashスクリプトに入れることができるものはありますか?
答え1
一部のシェル基本ツールを使用します。
for f in *.jpg
do
mv -- "$f" "${f%.jpg}$(< ${f%.jpg}.txt ).jpg"
done
この$(< ...)
構文は bash に与えられたファイルの内容を読むように要求します。指定されたファイルは、末尾と追加を削除することによって.jpg
追加されます.txt
。
答え2
これを行うには、次のbashスクリプトを使用できます。
#!/bin/bash
files='/path/to/files'
for file in "$files/"*.jpg; do
tag=$(grep '_tags_' "${file/.jpg/.txt}")
bname=${file%.jpg}
mv "$file" "${bname}${tag}.jpg"
done
.jpg
これは、指定したパスのすべてのファイルを繰り返します。
tag
_tags_
.txt
処理中の現在のファイルと同じ名前のファイルの文字列に対して Grep を実行し、.jpg
それを完全行に設定します。
bname
処理中の現在のファイルのデフォルト名(拡張子なし)に設定されます。
次に、ファイル名をname / tag.jpgに変更します(例でも同様2675_tags_mountains_daylight_oregon.jpg
)。