• 締切済み

拡張子の異なる同一ファイルの削除

同じフォルダに拡張子の異なるmp4とmovのデータが入っています。拡張子の前は同じ名前です。どちらか片方しかない場合はそのまま、両方ある場合は片方のみ残したいです。(どちらを残すべきかまだ決めていませんがどちらがいいでしょうか、、)やり方を教えていただけると嬉しいです。 調べてみましたがわからなかったので初心者用に噛み砕いて教えていただけるとありがたいです。よろしくおねがいします。

みんなの回答

  • Kaneyan-R
  • ベストアンサー率42% (1340/3126)
回答No.3

MOVはQuickTime形式の動画ファイルで、Mac等Apple製品の標準動画形式の一つです。 MP4は近年のデジタルコンテンツファイルとして多く利用されていますが、実はMP4はAVIと同じ「コンテナファイル」であり、動画と音声自体は別の形式(コーデック)となります。 なので、「H.264+mp3」でもMP4ですし、「H.265+AC3」でもMP4です。 そしてMP4と言う拡張子には動画と音声の区別がありません。 あえて区別する場合のみ動画を「m4v」、音声を「m4a」と言う拡張子にします。 どちらを残すかですが、mp4とmovがどちらも全く同じ画質・品質であるならどちらを残しても良いでしょうが、何を基準に判断するかで低画質の方を残してしまう場合もあるので注意してください。

  • retorofan
  • ベストアンサー率34% (435/1276)
回答No.2

>初心者用に噛み砕いて教えていただけるとありがたいです。 了解です! まず、mp4とmovのどちらを残すかを決めるのに役立つ情報として、 mp4のほうがより広くサポートされている形式です。 ですので、mp4を残すことに決めましょう。 以下に、Bashスクリプトのサンプルを示します。 #!/bin/bash # 免責事項 # このスクリプトは、自己責任で使用してください。 # このスクリプトの使用によって生じた損害について、作成者は一切の責任を負いません。 # このスクリプトを使用することで発生する可能性のあるデータの損失や # その他の損害について、作成者および配布者は一切の責任を負いません。 for file in *.mp4; do basename="${file%.*}" if [ -e "${basename}.mov" ]; then echo "Removing ${basename}.mov" rm "${basename}.mov" fi done 次に、両方のファイルが存在する場合にMOVファイルを削除して、 mp4ファイルを残す方法を説明します。 【プロセス】 1).mp4拡張子のすべてのファイルをループで処理します。 2)ベース名(拡張子を除く部分)を取得します。 3)同じベース名で拡張子が .movのファイルが存在するかを確認します。 4)存在する場合は、そのmovファイルを削除します。 以上、試してみてください。

coco314jess
質問者

補足

わかりやすく説明してくださりありがとうございます。bashというものを使ったことがなかったのでとても勉強になります。 素人質問で大変申し訳ありませんが2点わからない部分があるのでお時間のある時に回答していただけると助かります。 ①echo "Removing $(basename).mov"の行について echoが繰り返しを指すことはわかったのですがRemovingは何か特別なことをするのでしょうか?rmとは違うのでしょうか。参考に載せた画像にあるスクリプトにはなかったものなので勉強させていただきたいです。 ②実行フォルダの指定について フォルダを指定したい場合にはfor file inと*.mp4の前にフォルダ名を入れればよいのでしょうか。フォルダ名が被ってしまわないようダイレクトに指定する場合の方法を教えていただけると嬉しいです。 初心者の質問にお手を煩わせてしまい申し訳ありません。よろしくお願いいたします。

  • zyunchan
  • ベストアンサー率21% (8/38)
回答No.1

movファイルはWindowsファイルなので、mp4のほうが無難だと思います。

関連するQ&A