【Linux】 findコマンド

プログラム作ったり、写真を管理したりすると特定のディレクトリ以下について大量のファイル操作する事は結構あるわけです。
例えば・・・

  • 拡張子がbakのファイルを全て削除する
  • ファイル名にtestを含むファイルの数を数える
  • 拡張子jpgを全てpngに変更する(そんな事ないと思うけど[E:coldsweats01])
  • ディレクトリの一覧を表示する
  • .svnディレクトリ以外のファイルについて文字コードをUTF-8に変更する

等など。
実は、これ全部 find とその他のコマンドの組み合わせで実現できます。findは特定ディレクトリ以下の条件に当てはまるファイルやディレクトリを検索するコマンドです。めっちゃ便利やから良く使うねんけど。

基本的な使い方

find ディレクトリ
    指定ディレクトリ以下の全てのファイルとディレクトリを表示する
find ディレクトリ -type タイプ
    指定ディレクトリ以下の全てのタイプで指定したファイルorディレクトリを表示する
find ディレクトリ -name 名前
    指定ディレクトリ以下の全ての名前のファイルorディレクトリを表示する
find ディレクトリ -exec コマンド {} ;
    指定ディレクトリ以下の全てのファイルを引数にしてコマンドを実行する

凝った使い方

find . -name .svn -type d -prune -or -type f -print
    カレントディレクトリ以下の.svnディレクトリ以外のディレクトリに含まれる全ファイルを表示する
find . -name .svn -type d -exec rm -Rf {} ;
    カレントディレクトリ以下の全ての.svnディレクトリを削除する
    SubversionでチェックアウトしたディレクトリからSubversionの管理情報を削除する時に便利

findと組み合わせると便利なコマンド

grep
    ファイル内の文字列探索(-rコマンドでもできるけど、findの方が高度な検索が可能)
wc
    ファイルの情報を表示(行数とか単語数とか)
file
    ファイルの情報(キャラクタコードとか)を表示
mv/cp/rm
    ファイルのコピーやら移動やら削除やら
nkf
    ファイルの文字コードを変更
perl/sed
    ファイルの内容置き換え

かなり応用可能なコマンドですなぁ。

Author: kan
初めてプログラムらしきものを作ったのは幼稚園の時。それから約40年経ち、現在はデジタル回路設計から信号処理、機械学習まで幅広い経験を活かしてシステムアーキテクトとして活動中。超並列処理、デジタル回路とソフトウェアのバランス設計が得意分野。 Linux/Mac/Windows使い。 C/C++を主要言語として、Unity、Qtなどのフレームワーク興味あり。UI/UXデザイン、STL拡張など。 音声処理、画像処理、技術コンサルは仕事でも請け負います。 一般ソフトウェア開発プロセス、医療機器ソフトウェア開発プロセス作成も進行中。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください