忍者ブログ

エンジニア初心者の備忘録

エンジニア初心者が躓いたことハマったことを公開します!

フォルダ内ファイルとリストの比較~プログラム超初心者のためのLinuxコマンド~

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

フォルダ内ファイルとリストの比較~プログラム超初心者のためのLinuxコマンド~

今回は、エクセルで作成された画像リストとディレクトリ内にある画像の比較をLinuxコマンドで行う方法を書き留めておきたいと思います。

【状況】
エクセルで作成された画像リスト「image_list.xlsx」と画像ファイルが置かれたディレクトリ「image」があります。
画像リスト「image_list.xlsx」にはあるがディレクトリ「image」に画像ファイルのない画像はなにかを知りたい状況です。

【内容】
<画像リスト「image_list.xlsx」の記載>
hoge01.jpg
hoge02.jpg
hoge03.jpg
hoge05.jpg
hoge06.jpg
hoge07.jpg
hoge08.jpg
hoge09.jpg
hoge10.jpg
hoge11.jpg
hoge12.jpg
hoge13.jpg
hoge14.jpg
hoge15.jpg

<ディレクトリ「image」内の画像ファイル>
hoge01.jpg
hoge02.jpg
hoge04.jpg

【コマンド】
ディレクトリ「image」の画像ファイルを確認します。
$ ls image/
hoge01.jpg  hoge02.jpg  hoge04.jpg

ディレクトリ「image」の画像ファイルの一覧をソートしてテキスト「image.txt」へ出力します。
$ ls image | sort > image.txt

テキスト「image.txt」が作成されたことを確認します。
$ ls
image  image.txt

既に手元にあるエクセルで作成された画像リスト「image_list.xlsx」はバイナリファイルであるため、また、改行コードが入るため、このままでは、上記で作成した「image.txt」と比較できません。
そのため、「image_list.xlsx」のリスト部分をコピーして作成したテキスト「image_list.txt」を作成し、そこに貼り付けます。
$ vim image_list.txt

テキスト「image_list.txt」が作成されたことを確認します。
$ ls
image  image.txt image_list.txt

2つのテキストファイル「image.txt」「image_list.txt」の差を出力します。
これで、「image.txt」にあって、「image_list.txt」にないものが下記であることが分かりました。

< hoge04.jpg

また、「image_list.txt」にあって、「image.txt」にないものが下記であることが分かりました。

> hoge03.jpg
> hoge05.jpg
> hoge06.jpg
> hoge07.jpg
> hoge08.jpg
> hoge09.jpg
> hoge10.jpg
> hoge11.jpg
> hoge12.jpg
> hoge13.jpg
> hoge14.jpg
> hoge15.jpg

$ diff image.txt image_list.txt
3c3,15
< hoge04.jpg
---
> hoge03.jpg
> hoge05.jpg
> hoge06.jpg
> hoge07.jpg
> hoge08.jpg
> hoge09.jpg
> hoge10.jpg
> hoge11.jpg
> hoge12.jpg
> hoge13.jpg
> hoge14.jpg
> hoge15.jpg
>

画像リスト「image_list.xlsx」にはあるがディレクトリ「image」に画像ファイルのない画像のリストを作成するのが目的でしたので「>」で始まる行を抽出して(grep -i '^>')しました。
また、ファイル名の先頭にある「>」は必要ないので除去しました(sed -e 's/> //g')。
$ diff image.txt image_list.txt|grep -i '^>'|sed -e 's/> //g'
hoge03.jpg
hoge05.jpg
hoge06.jpg
hoge07.jpg
hoge08.jpg
hoge09.jpg
hoge10.jpg
hoge11.jpg
hoge12.jpg
hoge13.jpg
hoge14.jpg
hoge15.jpg


これで、画像リスト「image_list.xlsx」にはあるがディレクトリ「image」に画像ファイルのない画像のリストが作成できました。
一つ一つのコマンドは知っていても組み合わせて使うとどのようなことができるのかはなかなか気づきづらいところです。


以上です!
PR

コメント

プロフィール

HN:
プラムザ 太郎
性別:
非公開

P R