find/xargs
find
ファイルを検索する
オプション
使ったことのあるものだけ書いてます
他にもかなり多くのオプションがあります
他にもかなり多くのオプションがあります
条件
オプション | 内容 |
-name xxx | ファイル名がxxxと一致するものを検索 |
-type | ファイルタイプが一致するものを検索 -type f :ファイル -type d :ディレクトリ -type l :リンク |
-atime n | ファイルの最終アクセス日数が条件に一致するものを検索 -atime +n :n日より経過 -atime n :n日前 -atime -n :n日未満 |
-ctime n | ファイルの最終更新日数が条件に一致するものを検索 -ctime +n :n日より経過 -ctime n :n日前 -ctime -n :n日未満 |
-user xxx | ファイルのユーザーがxxxと一致するものを検索 |
-o | or |
-a | and |
\( \) | 複数条件指定する場合などに()を優先 |
! | 条件の否定 |
実行
オプション | 内容 |
-exec コマンド {} \; | 検索したファイルに対してコマンドを実行 |
画面表示(デフォルト) | |
-print0 | ファイルとファイルの間に\0を入れる |
例
/usrディレクトリ配下で、bashというファイル名を探す
$ find /usr -name "bash" /usr/share/menu/bash /usr/share/doc/bash
カレントディレクトリで、タイプがディレクトリ(-type d)のファイルかつ(-a)
最終更新日時が1日未満のファイルを検索し
ls -lを実行する
最終更新日時が1日未満のファイルを検索し
ls -lを実行する
$ find . -type d -a -ctime -1 -exec ls -l {} \;
xargs
xargs コマンド
引き渡されたファイルに対してコマンドを実行
※findと組み合わせて使います
findの-execオプションと同様の効果ですが
-execが毎回コマンドを呼び出すのに対し、
xargsは必要最低回数しか呼ばないらしく
ファイルが多い場合にはxargsのほうが早いようです
引き渡されたファイルに対してコマンドを実行
※findと組み合わせて使います
findの-execオプションと同様の効果ですが
-execが毎回コマンドを呼び出すのに対し、
xargsは必要最低回数しか呼ばないらしく
ファイルが多い場合にはxargsのほうが早いようです
オプション
オプション | 内容 |
-0 | ファイルの区切りを"\0"にする |
例
カレントディレクトリで"*_Souri.txt"に合致するファイルを
開いて(cat)内容を名前順にソートし同じものを排除して(sort -u)表示
開いて(cat)内容を名前順にソートし同じものを排除して(sort -u)表示
$find . -name "*_Souri.txt" | xargs cat |sort -u
カレントディレクトリで"*_Souri.txt"に合致するファイルを
開いて(cat)内容を名前順にソートし同じものを排除して(sort -u)表示
開いて(cat)内容を名前順にソートし同じものを排除して(sort -u)表示
(ファイルにスペースなどが含まれる場合に使用) $find . -name "*_Souri.txt" -print0 | xargs -0 cat |sort -u