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
コメント