概要
この記事では、macOSのターミナルコマンドを使ってファイル名を指定して写真を一括コピーする方法を紹介します。結婚式の撮影後に 2,000 枚以上の写真から番号付きファイルを選択する必要があるというニーズに応えて、2 つのソリューションが提供されています。1 つはファイル名配列を使用して直接コピーする方法、もう 1 つはカンマ区切りの番号付きファイルを動的に読み取り、ファイル名形式に変換する方法です。どちらの解決策にも、ターゲット フォルダーの作成、777 アクセス許可の設定、find および cp コマンドを使用したファイルの再帰的な検索とコピーが含まれます。この方法は、多数のファイルの中から指定したファイルを正確に選択して転送する必要があるシナリオに適しています。将来的にはコマンドラインツールやソフトウェアに統合される予定です。
前回結婚式を撮った後、2,000 枚以上の写真がありました。今日いくつか選んで、写真の名前の番号を思い出しました。 Mac のファイル検索は英語のカンマで区切って簡単に検索できると思っていましたが、それができないとは誰が知っていたでしょうか。だから今はそれについて考えるときです。
Windows ではテストされていません
必ず sudo 権限でコマンド
を使用してください。 準備1.:
- *ファイルパス*
/Volumes/婚礼/DCIM: - 私の写真は
/Volumes/婚礼/DCIM/matched_photos。 - に保存されています (サブフォルダーを含む)。 の目標は、一致するファイルを
/Volumes/婚礼/DCIM/numbers.txtにコピーすることです。
0182,0178,0168,0165,0163,...
- *数値リスト*
IMG_编号.CR2: - 次の内容のカンマ区切りの数値リストがテキスト ファイルIMG_0182.CR2)。
- に保存されています: :
- これらの数値は、ファイル名形式
(例:
) に変換する必要があります。
環境
- :
- macOS システム (macOS のデフォルト シェルである zsh シェルを使用します)。
0182,0178,0168,0165,0163,...
- 解決策 1: ファイル名リスト
/Volumes/婚礼/DCIM/numbers.txtを直接使用する
1。ナンバリングファイル
を準備します IMG_XXXX.CR2番号付きリストがテキスト ファイルとして保存されていることを確認してください。そうでない場合は、手動で作成できます: IMG_ 「テキストエディット」を開きます。 .CR2番号を入力します。例:
- は
,として保存されます (リッチ テキストは避け、必ずプレーン テキスト形式で保存してください)。.CR2,IMG_。 - 2。数値をファイル名形式
IMG_に変換します。.CR2。 - 写真のファイル名の形式は
IMG_0182.CR2,IMG_0178.CR2,IMG_0168.CR2,...
なので、番号にプレフィックス
とサフィックス
を追加する必要があります。テキスト エディタの「検索と置換」機能を使用できます:
- は
Command + 空格を検索し、
に置き換えます。
先頭に
mkdir -p /Volumes/婚礼/DCIM/matched_photos && chmod 777 /Volumes/婚礼/DCIM/matched_photos && numbers=(IMG_0182.CR2 IMG_0178.CR2 IMG_0168.CR2 IMG_0165.CR2 IMG_0163.CR2) && for number in $numbers; do find /Volumes/婚礼/DCIM -type f -name "$number" -exec cp {} /Volumes/婚礼/DCIM/matched_photos/ \; ; done && chmod 777 /Volumes/婚礼/DCIM/matched_photos/*
を、最後に
- を手動で追加します。
- 結果の例 (部分):
- 3。ターミナル コマンドを使用して、ファイル
- を検索してコピーします。 "$number" ファイル名リストをコマンドに直接書き込み、権限を設定します:
- ターミナルを開く
- を押し、「ターミナル」と入力してEnterを押します。
コマンド
を入力してください
次のコマンドをターミナルにコピーして実行します (ここにはファイル名の一部のみが示されており、完全なリストには 151 が含まれています):
コマンドの説明:
0182,0178,0168,0165,0163,...
mkdir -p /Volumes/wedding/DCIM/matched_photos: ターゲット フォルダーを作成します。
chmod 777 / Volumes/wedding/DCIM/matched_photos: 宛先フォルダーに 777 権限を設定します。
numbers=(...): ファイル名配列を定義し、変換されたファイル名を直接使用します。
- find/Volumes/wedding/DCIM -type f -name "$number": / Volumes/wedding/DCIM とそのサブフォルダーで、完全に一致するファイル名を検索します。
-exec cp {} / Volumes/wedding/DCIM/matched_photos/ ;: 見つかったファイルを新しいフォルダーにコピーします。
chmod 777 / Volumes/wedding/DCIM/matched_photos/*: コピーされたすべてのファイルに 777 アクセス許可を設定します。
mkdir -p /Volumes/婚礼/DCIM/matched_photos && chmod 777 /Volumes/婚礼/DCIM/matched_photos && numbers=($(cat /Volumes/婚礼/DCIM/numbers.txt | tr ',' ' ')) && for number in $numbers; do find /Volumes/婚礼/DCIM -type f -name "IMG_${number}.CR2" -exec cp {} /Volumes/婚礼/DCIM/matched_photos/ \; ; done && chmod 777 /Volumes/婚礼/DCIM/matched_photos/*
解決策 2:numbers.txt ファイル
- を動的に読み取る
- 数値リストが変更される可能性がある場合、またはファイルをより柔軟に管理したい場合は、numbers.txt を使用して数値を動的に読み取り、ファイル名を生成できます。
- 1。ナンバリングファイル
- を準備します
- / Volumes/wedding/DCIM/numbers.txt が存在し、内容がカンマ区切りの数字であることを確認してください:
- 2。端末コマンドを使用して
- -name "IMG_${number}.CR2" を読み取り、処理します
- 次のコマンドは、numbers.txt を読み取り、数値をファイル名形式に変換して検索を実行し、同時にアクセス許可を設定します:
- 3。端末
を開きます
- Command + Space を押し、「ターミナル」と入力して Enter を押します。
- 4。コマンド
を入力します。
次のコマンドをターミナルにコピーして実行します:
- コマンドの説明:
ls /Volumes/婚礼/DCIM
mkdir -p /Volumes/wedding/DCIM/matched_photos: ターゲット フォルダーを作成します。
- chmod 777 / Volumes/wedding/DCIM/matched_photos: 宛先フォルダーに 777 権限を設定します。
find /Volumes/婚礼/DCIM -type f | head -n 10
numbers=($(cat / Volumes/wedding/DCIM/numbers.txt | tr ',' ' '))
- cat は、numbers.txt を読み取ります。
find /Volumes/婚礼/DCIM -type f -name "IMG_0182.CR2"
tr ',' ' ' カンマをスペースに置き換えて、zsh 配列を生成します。
- $numbers の番号。 do ...: 各数値 (0182 など) を繰り返します。
cat /Volumes/婚礼/DCIM/numbers.txt
-name "IMG_${number}.CR2": IMG_0182.CR2 などのファイル名を動的に生成します。
- -exec cp {} / Volumes/wedding/DCIM/matched_photos/ ;: 見つかったファイルを新しいフォルダーにコピーします。
ls -l /Volumes/婚礼/DCIM/matched_photos
chmod777 /Volumes/wedding/DCIM/matched_photos/*: コピーされたすべてのファイルに 777 アクセス許可を設定します。
利点:
番号を変更する必要がある場合は、コマンドを変更せずにnumbers.txtを編集するだけです。











