![同名のファイルを削除](https://linux33.com/image/216524/%E5%90%8C%E5%90%8D%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E5%89%8A%E9%99%A4.png)
私は何年もスクリプトを書いていなかったので、以下で助けることができる人がいるかどうか疑問に思います。
GoogleフォトからAmazonフォト(写真約40,000枚)に移行しようとしています。以下は、Googleからダウンロードした例です。
IMG-20180601-WA0004-modifié.jpg
IMG-20180601-WA0004.jpg
IMG-20180601-WA0004.jpg.json
IMG-20180601-WA0005-modifié.jpg
IMG-20180601-WA0005.jpg
IMG-20180601-WA0005.jpg.json
IMG-20180601-WA0008-modifié.jpg
IMG-20180601-WA0008.jpg
IMG-20180601-WA0008.jpg.json
IMG-20180601-WA0009-modifié.jpg
IMG-20180601-WA0009.jpg
IMG-20180601-WA0009.jpg.json
IMG-20180601-WA0010-modifié.jpg
IMG-20180601-WA0010.jpg
IMG-20180601-WA0010.jpg.json
IMG-20180601-WA0011-modifié.jpg
IMG-20180601-WA0011.jpg
IMG-20180601-WA0011.jpg.json
IMG-20180601-WA0013-modifié.jpg
IMG-20180601-WA0013.jpg
IMG-20180601-WA0013.jpg.json
IMG-20180601-WA0014-modifié.jpg
IMG-20180601-WA0014.jpg
IMG-20180601-WA0014.jpg.json
IMG-20180601-WA0015-modifié.jpg
IMG-20180601-WA0015.jpg
IMG-20180601-WA0015.jpg.json
IMG-20180601-WA0020.jpg
IMG-20180601-WA0020.jpg.json
IMG-20180601-WA0036-modifié.jpg
IMG-20180601-WA0036.jpg
IMG-20180601-WA0036.jpg.json
VID-20180601-WA0012.mp4.json
VID_20180601_195857.mp4.json
métadonnées.json
私は以下が欲しい:
- 写真をダウンロードしたデフォルトフォルダ内のすべてのディレクトリを検索し、
- mov、mp4、mpeg、mpg、avi、m4v、wmvなどのすべてのビデオファイルを削除します。(時にはファイル拡張子が大文字の場合もあります。)
- 写真の場合、ほとんどのファイル名が重複していることがわかります(1つは「modifié」という言葉がなく、もう1つは「modifié」という言葉があります)。すべてのファイルにIMG-20180601-WA0020.jpgのような「修正された」バージョンがあるわけではありません。元のファイルに「modifié」バージョンがない場合を除き、ファイル名に「modifié」という単語が含まれていないすべての写真を削除してアーカイブしたいと思います。(IMG-20180601-WA0020.jpgは保持されている例です)。
- ビデオファイルと関係がない場合はjsonファイルを保存し、それ以外の場合は削除することをお勧めします。
答え1
すべてのビデオファイルを削除する方法は次のとおりです。
find . -type f \( -iname '*.mp4' -o -iname '*.mp4.json' \) -delete
-o -iname '*.suffix'
必要な他のサフィックスの詳細を追加します。
変更のために元のイメージを削除するには、次のコマンドを実行します。
find . -name '*-modifié.jpg' -exec sh -c 'rm -f $(echo "$1" | sed s/-modifié//)' _ {} \;
変更されていないバージョンを持つすべてのファイルを見つけて、変更されていない-modifié
バージョンを削除します(rm -f
変更されていないバージョンがないとエラーメッセージは表示されません)。
PS:問題が発生した場合に備えて、このコマンドを修正/実行する前にバックアップを実行することをお勧めします。
答え2
そしてzsh
:
zmodload zsh/files # for a builtin rm to avoid the "too many args" limit
# of the system one
set -o nocaseglob
echo rm -f -- **/*.(mp4|mpeg|mpg|mov|wmv|avi|m4v)(|.json)(N.)
echo rm -f -- **/*-modifié.jpg(N.e['reply=( ${REPLY%-*}.jpg(|.json)(N.) )'])
echo
実際にこれを行うには、sを削除してください。