(56) findで検出したファイルに対してコマンドを実行

投稿者: | 2017年9月7日

2,980 views

この記事は最終更新から 1031日 が経過しています。

1. やりたいこと

find で検出した個々のファイルに対して、任意のコマンドを実行したい。

2. やってみる

方法1: ベタなループで書く

文字数は増えるがわかりやすい。

for FILE in `find . -type f -name "*.txt"`;do
  ls -l $FILE
done

方法2: xargsコマンドと連結する

これも便利だ。

find . -type f -name "*.txt" | xargs ls -l

xargs で明示的に引数を示すことも出来る。

find . -type f -name "*.txt" | xargs -IXXXXX ls -l XXXXX

方法3:findの-execオプションを使用

find-exec オプションで実現するとこうなる。

find . -type f -name "*.txt" -exec ls -l {} \;

memo #1 : {} が検出したファイル名に置き換わる。
memo #2 : 最後は \; で締めくくる。

使用例1) 検出したtextファイルの中身を置換

find . -type f -name "*.txt" -exec sed -i -e "s/AAA/BBB/g" {} \;

使用例2) 検出したtextファイルとcssファイルの中身を置換

find . -type f \( -name "*.txt" -or -name "*.css" \) -exec sed -i -e "s/AAA/BBB/g" {} \;

注意: \( と -name の間には空白文字を入れること。 \) も同じ。


アクセス数(直近7日): ※試験運用中、BOT除外簡易実装済
  • 2026-01-24: 0回
  • 2026-01-23: 0回
  • 2026-01-22: 1回
  • 2026-01-21: 0回
  • 2026-01-20: 1回
  • 2026-01-19: 0回
  • 2026-01-18: 0回
  • コメントを残す

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