パイプ入力に存在しないファイルの印刷

パイプ入力に存在しないファイルの印刷

多くのファイルを含む.PDFディレクトリがあります.JPG

.JPG.PDF各ファイルには同じ名前のファイルが必要です。ファイルがないファイルを
見つけるためにコマンドを使用しようとしています。.PDF.JPG

私の現在のコマンドは次のとおりです。

find -iname '*.jpg' -print0|sed 's/jpg$/pdf$/ig' |xargs -0 ls

これにより、: No such file or directoryファイルが存在しないというエラーが出力されます。
問題があるかls処理できないというエラーが表示されます。次のいずれかが私の問題を解決します。 grepsed

  • ls存在しないファイルのみをリストする方法は?
  • /filter ls/sedエラーを処理する方法はgrep
  • bashスクリプトファイルを生成せずにファイルの存在を確認する別の方法はありますか?

ベストアンサー1

ループを使うべきだと思います

IFR=$'\0' # because you use -print0 on your find
for jpg_file in `find -iname '*.jpg' -print0`
do
  pdf_file=`echo "$jpg_file" | sed 's/jpg$/pdf/i'`
  if [ -e "$pdf_file" ]; then
    echo "$pdf_file exist"
  else
    echo "$pdf_file missing"
  fi
done

おすすめ記事