納品時などにリストにあるファイルのみ抽出する方法Mac版

数千〜数万ページ単位のwebサイトリニューアルに縁があるふもぱん先生(他称)です。

大量のファイル群から、ファイルリスト(テキストファイル)に記載したファイルのみを抜き出す方法をまとめました。webサイトの全量ファイル等から、必要な納品ファイルのみ抜き出すときなどに有用です。

抽出イメージ

図表 ファイル抽出のイメージ
抽出元となるファイル群(上図左)から、必要なファイルのパスを記述したファイルリスト(上図中央)にあるものだけを抽出する方法を紹介します。

作業フォルダ


「納品」というディレクトリに、「list.txt」という抽出したいファイルリストを記載したテキストファイルと、「www」という抽出元のディレクトリがある状態を例にとって説明します。

ファイルリストの例

抽出するファイルリストを記載する「 list.txt 」の中身は、以下のように作成します。1行に1ファイルのフルパスを記載し、文字コードは「UTF-8」にします。

ターミナル.appの起動

「ターミナル.app(Terminal.app)」というアプリを起動します。Macの場合、以下いずれかの方法で起動できます。

  • [control] キー + [space] キーの同時押しで「 Spotlight 検索」を立ち上げ、「ターミナル」と入力し、以下画像のものをクリック。
    terminal-app-spotlight
  • または、Finder で「アプリケーション」 → 「ユーティリティ」内にある「ターミナル.app」をダブルクリック。
    terminal-app-finder

以下のような画面が立ち上がります(見た目は環境によって違う場合があります)。

抽出したいファイルのあるディレクトリへ移動

ターミナル.appで、抽出したいファイルのあるディレクトリへ移動します。

cd+半角スペース
を入力し、その後に「納品」フォルダをドラッグ&ドロップします。
※「cd」は、change directory の意で、ディレクトリ移動を意味するコマンドです。


自動的に作業ディレクトリ「納品」へのパスが入力されるので、Enterを押します。
※パスは手入力しても問題ありません。


「納品」ディレクトリに移動できました。

抽出コマンドを実行


以下を入力し、Enterを押します。
rsync -avc –files-from=list.txt ./ nouhin/

  • list.txt … 予め作成したテキストファイルと同一の名前であれば、任意の名前でOKです。
  • ./ … list.txt の基準となるディレクトリを決めます。特に変える必要はありません。
  • nouhin/ …抽出したファイルを格納するディレクトリ名です。任意の名前でOKです。


実行中のプロセスが表示され、抽出が完了すると止まります。

抽出結果を確認


「nouhin」というディレクトリが作成され、「www」から「list.txt」で指定したファイル群が抽出されたものが格納されます。

以上です。

まとめ

よくあるケースとは言えないかもしれませんが、数千ページ単位のwebサイトリニューアルに関わっていると、一部指定されたファイルのみ先行納品するシーンがあります。いろいろなディレクトリに点在しているファイルを集めて納品しなければならないこともあり、それらを手作業で行うとミスのもとになります。

案件規模が大きいほど、最後の最後の納品でミスを犯してしまうと、これまでの努力が…と両膝から崩れ落ちる気持ちにもなりますので(かつて経験済)、できるだけ機械様の力を借りましょう。

フリーソフト等で類似のことができるものは存在しますが、不具合や動作に時間がかかるケースもあります。この手のコマンドを扱えると、何かとはかどりますのでご参考まで。

参考サイト

【 rsync 】コマンド(その1)――ファイルやディレクトリを同期する

参考文献