linux ファイル検索系コマンドまとめ
CTF のリモートサーバーにアクセスして解くタイプの問題においてよく使う, ファイルの存在場所の検索を行う系のコマンドの使い方メモ
find コマンド
- ファイルの検索を行う
- 第一引数に検索対象のディレクトリを指定する (何も指定しないとカレントディレクトリとなる)
- 基本的には以下を使えば OK
find -name $NAME
現在のディレクトリから下位の層を再帰的に検索する
ワイルドカードを使用可能 (下記は
flag.txt
などの flag から始まる名前のファイルを一括で検索する)
find -name "flag*"
- ディレクトリのみ, ファイルのみの検索は以下のオプションを使用
find -name $NAME -type d # directory only find -name $NAME -type f # file only
ファイルサイズをベースに検索
-size
オプションでファイルサイズを指定可能
find -name $FILE -size +$SIZE find -name $FILE -size -$SIZE find -name $FILE -size $SIZE
- サイズについて
+
はそれ以上,-
はそれ以下, 無符号はぴったりのサイズのファイルに限定した検索を行う - サイズの指定単位は
c
でバイト,k
でキロバイト,
日時ベースの検索
- 直近に指定したアクションが発生している (していない) ファイルのみを表示することが可能
- オプション名は接頭語がアクション, 接尾語が時間単位を表す
接頭語 m: 修正 a: アクセス c: ステータス (所有権などの属性) を含む修正 接尾語 min: 分 time: 日
- 例: 最後に修正された日時 (分, 日)
# minute find -name $FILE -mmin $NUM # day find -name $FILE -mtime $NUM
$NUM
には該当する単位における時間を入れる+
なら ~ 日 (分) より前,-
なら ~ 日 (分) より後, 符号なしならば丁度 ~ 日 (分) 前
検索結果に対するコマンドの実行
-exec
オプションでコマンドを実行可能
find -name $FILE -exec rm {} \;
- 上記例では指定したファイルを削除する
{}
に検索結果が格納される\;
はコマンドの終端
which コマンド
- コマンドがどこに保存されているかを調べるコマンド
which $COMMAND # example which ls # /usr/bin/ls
- ヒットが複数存在する場合は
-a
オプションですべて表示可能 (バージョンを複数入れている場合などに使用)