ファイル名は同じですが、拡張子が異なる2つのフォルダを同期する方法

ファイル名は同じですが、拡張子が異なる2つのフォルダを同期する方法

rsyncを使用して2つのフォルダを同期する方法はありますか?

JPGとRAW形式で写真を撮りたいです。 JPGを見るのはRAWを開くよりもはるかに速いので、JPGフォルダを選択してRAWフォルダに同期したいと思いました。ただし、拡張子は異なりますが、ファイル名は同じです。

最も可能性の高い解決策は、これを行うためにshを作成してからエイリアスを指定することです。

答え1

通常、ファイル名は似ていますが、特定の場所で変更されている場合は、[]括弧内に違いを設定できます。

ruslanas@ruslanas test]$ ls 
a.jpg  a.raw  a.doc
[ruslanas@ruslanas test]$ ls a.{jpg,raw}
a.jpg  a.raw
[ruslanas@ruslanas test]$ 

または、jpgとrawの拡張のみがあり、その2つの拡張のみがある場合は、アスタリスクを使用してください。

また、シングルライナーを使用して生からjpgを抽出するには、生を生のディレクトリに移動します。

cd /path/to/fresh-photos && ls *raw | while read line ; do culling $line -output /path/to/processed/jpg/$(echo $line | sed 's/raw$/jpg/g') && mv $line /path/to/processed/raw ; done

カールをクーラーに交換するだけです!

上記の行のもう1つの欠点は、新しいファイルに一時ディレクトリを提供する必要があることです。未処理のjpgだけを選別する簡単な方法もあります。

RAW=/path/to/raw && JPG=/path/to/jpg && find $RAW $JPG -type f \( -name '*.raw' -o -name '*.jpg' \) -exec basename {} \; | sed -e 's/\.jpg$//g' -e 's/\.raw$//g' | sort -n | uniq -u | while read line ; do echo "processing ${RAW}/${line}.raw" && culling ${line}.raw -output ${JPG}/$line.jpg ; done

今回もカーリングを抱擁命令に変えてください。

JPGディレクトリにないRAW写真のみを削除する必要がある場合:

RAW=/path/to/raw && JPG=/path/to/jpg && find $RAW $JPG -type f \( -name '*.raw' -o -name '*.jpg' \) -exec basename {} \; | sed -e 's/\.jpg$//g' -e 's/\.raw$//g' | sort -n | uniq -u | while read line ; do echo "Removing: ${RAW}/${line}.raw" && rm -f ${RAW}/${line}.raw ; done

自分の拡張子に変更されていない場合は、すべての拡張子が小文字でなければならないことを覚えておいてください。

初めて公開する前に、次のテストコマンドを実行してください。

RAW=/path/to/raw && JPG=/path/to/jpg && find $RAW $JPG -type f \( -name '*.raw' -o -name '*.jpg' \) -exec basename {} \; | sed -e 's/\.jpg$//g' -e 's/\.raw$//g' | sort -n | uniq -u | while read line ; do echo "Removing: ${RAW}/${line}.raw" && echo rm -f ${RAW}/${line}.raw ; done

script.bashまた、これをファイルに入れる場合と&&s / new行;を置き換えてください。enterより読みやすいテキストを取得するには。

関連情報