写真を撮影した後は、JPG(ファイル*.jpg)とRAW(ファイル*.CR2)という2つのフォルダが作成されます。通常JPGフォルダを見て、気に入らないものは削除します。
私が望むのは、次のことを確認するbashスクリプトを作成することです。
for file.cr2 in folder.getFiles
if file.jpg is NOT in folder2.getfiles
delete file.cr2
私はrsyncのいくつかの例を見ましたが、ファイルの拡張子が同じで、bashがうまくいかず、Cで行うことができますが、学びたいと思います。
答え1
この試み:
for file in cr2files/*; do
test=”jpgfiles/$(basename ${file:: -3})jpg”
if [ ! –f “$test” ]; then
echo “$file”
fi
done
必要な結果が得られたら、echo "$file" - 行を - rm "$file" - に置き換えることができます。 test="jpgfiles/$(basename ${file:: -3])jpg" 行はファイル名からパスと拡張子を削除し、"jpgfile/filename.jpg" に置き換えます。パス名「cr2files」と「jpgfiles」を正しいパス名に変更することを忘れないでください。必要に応じて変数を使用するか、パラメータのスクリプトにパス名を渡すことができます。
編集する:
「東芝 ser」の空間が基本名をめちゃくちゃにしています。解決策は次のとおりです。
#!/bin /bash
IFS=’’
for file in “$1”/*; do
test=”$2/$(basename ${file:: -3})jpg”
if [ ! –f “$test” ]; then
rm “$file”
fi
done
"volumes/toshiba ser/raw" "volumes/toshiba ser/jpg"のように./removephotos.shを呼び出します。 2行の一重引用符の間にIFS = ''という文字はありません。