複数のファイルから単語を含む行を削除する方法は?

複数のファイルから単語を含む行を削除する方法は?

<premiered>*.nfoファイル(サブディレクトリを含む)に含まれている行を削除したいと思います。

これが私が使用するコマンドです

find . -type f -name '*.nfo' -exec sh -c '
  file="$0"
  echo "$file"
  sed -i -e '/<premiered>/d' "&file"
  read line </dev/tty
' {} ';'

残念ながら、私が得るものは

-bash: premiered: No such file or directory

問題は何であり、どのように解決できますか?

ベストアンサー1

問題は、引用符を入れ子にできないことです。閉鎖前に参照し/<premiered>/dてから、もう一度開きます。これは<premiered>呼び出しシェルに公開され<>リダイレクト演算子として解釈されることを意味します。

実際、sedコマンドをシェルコマンドでラップする必要はありません。次の引数で直接実行できますfind ... -exec

find . -type f -name '*.nfo' -exec sed -i -e '/<premiered>/d' {} \;

ファイル名もエコーするには、別の次を追加してください-print

find . -type f -name '*.nfo' -print -exec sed -i -e '/<premiered>/d' {} \;

おすすめ記事