【Shell】findコマンドで .DS_Store Thumbs.db ファイルを除外する方法

MacやWindowsのOSが自動で生成するファイル「.DS_Store」や「Thumbs.db」について、findコマンドで検索時に除外したい場面があると思います。
この記事では、特定のファイル・ディレクトリを除外してfindコマンドで検索する方法をご紹介します。

使用した環境

  • Macbook Pro (13-inch, 2017, Four Thunderbolt 3Ports)
  • macOS Mojave バージョン 10.14.4

findコマンドで特定のファイルを除外する

特定のファイルを除外する場合「-prune」オプションを使用します。
「find 検索場所 条件1 -prune -or 条件2」のように指定することで、条件1に該当すれば何も行わないという動作となります。

例として下記のコマンドでは、「file_name」ファイルを除外したファイル一覧を取得します。

$ find . -type f -name file_name -prune -or -type f -print

下記は「directory_name」ディレクトリ内のファイルを除外します。

$ find . -type d -name directory_name -prune -or -type f -print

findコマンドで.DS_Storeファイルを除外

$ find . -type f -name .DS_Store -prune -or -type f -print

findコマンドでThumbs.dbファイルを除外する

$ find . -type f -name Thumbs.db -prune -or -type f -print

findコマンドで.DS_Store と Thumbs.dbファイルを除外する

$ find . -type f -name .DS_Store -prune -or -type f -name Thumbs.db -prune -or -type f -print

動作確認

今回はカレントディレクトリに以下のファイルが存在する状態でコマンドを確認します。

  • test1.txt
  • test2.png
  • Thumbs.db
  • .DS_Store

findコマンドで.DS_Storeファイルを除外する

$ find . -type f -name .DS_Store -prune -o -type f -print
./Thumbs.db
./test1.txt
./test2.png

findコマンドでThumbs.dbファイルを除外する

$ find . -type f -name Thumbs.db -prune -o -type f -print
./.DS_Store
./test1.txt
./test2.png

findコマンドで.DS_Store と Thumbs.dbファイルを除外する

$ find . -type f -name .DS_Store -prune -o -type f -name Thumbs.db -prune -o -type f -print
./test1.txt
./test2.png

コメント

タイトルとURLをコピーしました