このフォルダ内には、多くのテキストファイルを含むフォルダツリーがあります。これらのファイルには、同じ名前 "log.txt"と同じ形式があります。たとえば、各ファイルに次のような複数行を表示できます。
date
name
.
.
.
find
コマンドを使用してこのフォルダツリーですべてのテキストファイル「log.txt」を見つけて、各テキストファイルで「date」という単語を「dating」という単語に置き換えるにはどうすればよいですか。
答え1
現在ツリーのルートにあるとします(そうでない場合は、「.」をディレクトリ名に置き換えます)。 「log.txt」を「*.txt」または必要に応じて置き換えることができます。
find . -type f -name 'log.txt' -exec sed -i 's/date/dating/g' {} \;
答え2
ディレクトリルートでおよびを使用できますfind
。sed
find . -type f -name 'log.txt' -exec sed -i 's/^date$/dating/' {} +
find . -type f -name 'log.txt'
log.txt
すべてのファイルを再帰的に検索します。-exec
述語では、find
ファイルの1行に置き換えsed -i 's/^date$/dating/' {} +
られます。date
dating